“SQL был создан для того, чтобы бухгалтера сами получали данные из базы и программисты были не нужны.”
Серьёзно, если вам нужно просто получить ответ - вам по этой ссылке.
С листа сложные запросы я пишу с ошибками. В реальной задаче я их проверю на данных, идентичных натуральным, и перепишу так, чтобы ошибок не было. ChatGPT в этой задаче использовался только для написания шаблона запросов (из четырёх с третьей попытки с ошибками заработало полтора, переписаны практически полностью из головы, в документе ниже описано) и для генерации данных для проверки (аналогично, много правок, в документе ниже описано). Даже с такими ошибками, он существенно ускоряет подобные процессы, а проверять нужно вообще всегда - что за внешними нейросетями, что за внутренними (в моей голове).
*На почти всех собеседованиях у меня, системного аналитика, спрашивают про SQL. Я всегда говорю, что умею, но со словарём и языковыми моделями, ибо в моём опыте аналитика примерно никогда это не было нужно, кроме как на собеседованиях. На них нужно на всех. Я стараюсь спрашивать, зачем это может понадобиться. Буду рад контрпримерам, когда в хороших процессах именно системные аналитики запросы пишут :)
Такой ответ (про словарь и языковые модели) может создавать искажённое представление о том, как я могу работать, поэтому я подробно покажу, как я решаю задачи по SQL (или с использованием генеративных нейросетей, тут вышло хорошо в двух профилях разом) на примере одного из собеседований.
На выполнение смысловой части ушло 35 минут, в доку оформить было примерно столько же. Я привожу подробное описание процесса, чтобы его легко можно было воспроизвести, в плюс - чтобы показать, как работает моя голова и как ещё я могу писать документацию.
Если у вас возникло ощущение, что документацию или решение можно улучшить - сообщите мне об этом, пожалуйста. Эта документация - тоже результат итерационной разработки.*
Необязательно отвечать на все вопросы, можно выбрать 2.
Первый взгляд на вопросы показывает, что они очень однотипные. Примерно все ответы будут содержать SELECT с простым JOIN’ом или несколькими, с одним-несколькими условиями в WHERE. Когда предлагают выбрать между 22+1, 22+2, 22+3, 22+4, проще выбрать все, разницы нет.
Отдельно замечу, что голосом было проговорено, что речь о Постгре, но сложность запросов такая, что и на других БД они будут плюс-минус такие же, кроме, разве что, типа JSONB - его у основных нет, его разбирать будет увлекательно. Факультативно посмотрю и для них в свободное время, это время будет учтено отдельно и указано выше, когда доку обновлю.