Rikk
> фирма подала конкретный именно этот учебник
> вопрос я задал как конкретно по именно учебнику и в конкретном пакете решить задачу.
ммм... допустим ты на работу бы устроился.
ты думаешь задачи, которые ты бы решал на работе они все тоже из учебника? (и других не бывает)
Rikk
> огромное число после 11класса не поступают в универ а идут в армию
Ну и пусть идут. Как это отменяет тот факт, что школьная программа - это детская программа для самых маленьких?
> учебник пробегите быстро до стр 140
Пробежал учебник до 3 страницы. В введении написано:
Предполагается, что приступающие к изучению данного учебного курса имеют
базовые представления об использовании языка запросов Transact-SQL (T-SQL) для
получения данных в SQL Server 2012 и опыт работы с данным продуктом.
skalogryz
> решал на работе они все тоже из учебника?
подобные или примерные.
потому и существуют курсы обучения по программе такой и такой.не?
ранее имел дело с sql но на инструменте php сервер apache
Rikk
> подобные или примерные.
у меня для тебя плохие новости.
Rikk
> потому и существуют курсы обучения по программе такой и такой
все курсы дают общие азы.
когда доберёшься до дела всё начинается затачиваться под конретные бизнесс задачи.
А курсы нужны, чтобы о базовые вещи не спотыкаться, когда приступишь к полезной работе.
А правильный ответ на исходную задачу так никто и не написал.
SELECT ISNULL(p.name, ''), SUM(o.sum) FROM Operation AS o LEFT JOIN Partner as p ON o.id_part = p.id_part GROUP BY p.name;
Dieseluga
у тебя ошибка. Пустое имя будет первым в списке
skalogryz
Ошибки нет, так как в условии не сказано ничего про сортировку. Но при необходимости ничто не мешает добавить "ORDER BY p.name" или "ORDER BY p.name DESC", опять же, если это будет явно сказано в ТЗ.
сказано:
Необходимо написать SQL-запрос, который выводит результат:
name sum
Иванов 5
Сидоров 90
25
фамилии идут алфавитно, а пустое имя в конце
skalogryz
"фамилии идут алфавитно, а пустое имя в конце" - это Вы написали, предположение.
Автор не указал сортировки, как обязательное условие. Если рассуждать по примеру вывода, то можно решить, что первые две строки сортируются, например, по сумме, а последняя строка - без фамилии. Повторюсь, явно об этом не сказано.
Dieseluga
благодарю
Давайте я напишу универсальный вариант для большинства SQL-СУБД:
SELECT CASE WHEN p.name IS NULL THEN '' ELSE p.name END, SUM(o.sum) FROM Operation AS o LEFT JOIN Partner as p ON o.id_part = p.id_part GROUP BY p.name ORDER BY CASE WHEN p.name IS NULL THEN 1 ELSE 0 END, p.name
skalogryz
> благодарю
@Rikk, обрати внимание на то, что только что проделал Dieseluga:
Ошибки нет, так как в условии не сказано ничего про сортировку. Но при необходимости ничто не мешает добавить "ORDER BY p.name" или "ORDER BY p.name DESC", опять же, если это будет явно сказано в ТЗ
"фамилии идут алфавитно, а пустое имя в конце" - это Вы написали, предположение.
Автор не указал сортировки, как обязательное условие. Если рассуждать по примеру вывода, то можно решить, что первые две строки сортируются, например, по сумме, а последняя строка - без фамилии. Повторюсь, явно об этом не сказано.
Подобные навыки - навыки защиты своей работы, очень пригождаются в работе (особенно активно этим занимаются джуны и мидлы).
Что очень важно, ни один учебник об этом не расскажет. Какие-нить ютуб блогеры или нытики на хабре, могут рассказать, но их пример может быть для тебя далёк и непонятен.
А тут, всё происходит, как раз на примере твоей задачи.
Это так же является примером того, что в реальной работе ты будешь решать задачи иного рода, нежели: "подобные или примерные. (задачам из учебника)"
Тебе придётся заниматся переводом человеческих понятий, и ожиданий, в код.
skalogryz
> Расскажи лучше за Postgres, если он такой великий, нахрена в нём два синтаксиса
> (PL/pgSQL, PL/SQL)?
https://www.postgresql.org/docs/14/xplang.html - где два синтаксиса?
Я вижу только такие варианты - PL/pgSQL (Chapter 43), PL/Tcl (Chapter 44), PL/Perl (Chapter 45), and PL/Python (Chapter 46) - но тут ты сам же себе ответил, зачем оно надо.
Единственное упоминание PL/SQL, которое я нашёл - это в главе 43.13. Porting from Oracle PL/SQL. Может, это действительно просто два разных языка из разных движков, и ты всё перепутал?
skalogryz
> Это хорошо, если бд используется тупо как хранилище данных, и цельный софт не
> использует каких-нить специфических фич.
> Потому что если использует, то всё - сменить БД, без крови, не получиться.
Прочитай моё сообщение до конца.
Rikk
> потому такие девушки 11класс отличницы с пятерками а 1курс октябрь двоечницы и
> попутно преступницы—-надо мальчика побить отобрать списать.просто удивительно
> как в 11классе круглая отличница а через четыре месяца двоечница
> про все эти темы—-я хожу на то что мне надо—это неверно.вы должны посещать все
> занятия по плану а пропускать только по болезни.
Чего? Я давно уже не школьник и даже не студент, если что.
MrShoor
> Для сейвов в игре SQLite как-то оверкилл.
Ну вот для какого-нибудь элден ринга или майнкрафта, где мир сохраняется в реалтайме - он вполне бы подошёл, мне кажется.
А мудохаться с таблицами вовсе необязательно, если нам не нужно их индексировать и джойнить - мы можем тупо сделать CREATE TABLE (key text PRIMARY KEY, value blob NOT NULL) и использовать БД-файл тупо как вариацию на зип-архив - с тем отличием, что скулайт позволяет объединять произвольную последовательность чтений и записей в одну транзакцию.
Оно и в реальных базах данных бывает полезно. Выносить поля объекта в отдельные столбцы имеет смысл, только если с этими данными надо как-то работать на стороне движка БД - инспектировать в запросах, собирать в индексы, джойнить, груп-байить и так далее. Если же единственное, что требуется от базы данных - это прочитать блоб и передать его приложению - то вполне можно его как сплошной блоб и сохранить.
Имбирная Ведьмочка
> мы можем тупо сделать CREATE TABLE (key text PRIMARY KEY, value blob NOT NULL)
> и использовать БД-файл тупо как вариацию на зип-архив - с тем отличием, что
> скулайт позволяет объединять произвольную последовательность чтений и записей в
> одну транзакцию.
Тогда нафиг этот изврат? Мне и ОС позволяет объединить произвольную последовательность записей в одну транзакцию. Называется запись в отдельный новый файл.
Имбирная Ведьмочка
> Прочитай моё сообщение до конца.
не согласен насчёт "махрового легаси"... было бы так, что MS SQL 2022 бы не выходил.
А майкрософт мало того что заделала Developer Edition (для нищебродов разрабов. Раньше бесплатного можно было только куцый Express Edition получить)
так ещё и наворотило поддержку MSSQL из линукса.
Так что, конторы, у которых есть бабло, могут выбрать. Понятно, что у инди особо выбора нет. Между Postgres и MySQL (или как он сейчас ... MariaDb)
Имбирная Ведьмочка
> где два синтаксиса?
ты прав. Давай лучше с картинками!
Искарбоки, при написании хранимых процедур, можно выбрать следующие языки
"sql" и "plpgsql"
"sql" это типа синтаксис "обычный" как и произвольный SQL запрос. Но это не точно
а "plPgSql" это специальный сиснтасис SQL-а... но и это тоже не точно.
НО, в итоге выяснилось, что в "sql" синтаксисе объявить локальные переменные нельзя, в "plPgSQL" можно.
но синтаксис разный, и по-этому придёться учить и то и то.
а в MSSQL такого нет, там всё один сполошной TSQL. Очевидно, что время на освоение MSSQL сокращается в 2 раза.