Бесконечно долго можно смотреть на 3 вещи: огонь, воду и как аналитики спорят, куда ставить запятую в запросе. В общем, вряд ли вы найдете двух людей, которые отформатировали бы даже самый простой SQL-запрос одинаково.Но важно понимать, что форматирование - это необходимая вещь. Поэтому вот небольшой список best practices по код-стайлу. 📌1. SELECT * FROM - антипаттерн. - таблицы меняются и запрос, содержащий подобную конструкцию, может сломаться. - плохо читаемый код запроса, непонятно какие поля выбираются для дальнейшей работы. - вопрос производительности. Хорошая статья на эту тему. 📌2. Используйте СTE (с понятным псевдонимом). - повышение читаемости кода- дешевле выполнить cte один раз, кэшировать данные, а затем просто повторно использовать набор результатов по мере необходимости в своем коде.📌3. Используйте комментарии. Конечно, в идеальном мире, код должен быть самодокументируемым, но если есть места, которые неочевидны, то лучше их прокомментировать.Например, у вас встретился запрос, вот такого вида:SELECT manager FROM dict_table WHERE city = 'Зажопинск'и вот сиди и думай, баг это или фича. Ни одного комментария нет о том, почему внезапно из всего словаря вытащили только инфу по менеджеру только из одного города. 📌4. Избегайте подсказок оптимизатору. Например, вы увидели, что ваши данные со скошенным статистическим распределением и на радостях впихнули в запрос хинт, чтобы явно указать оптимизатору что делать. Но по мере роста объема данных это распределение может измениться и тогда ваша подсказка будет уже помехой. Хинт (hint) – это указание оптимизатору запросов, которое переопределяет его поведение по умолчанию на время выполнения SQL запроса. 📌5. Именование колонок должно быть в snake_case стиле. Хорошо:SELECT id, email, timestamp_trunc(created_at, month) AS signup_month FROM usersДалее идут более спорные пункты. Да начнутся голодные игры.📌6. Одиночное join условие должно быть на той же строке что и сам join. Хорошо:SELECT users.email, sum(charges.amount) AS total_revenue FROM users INNER JOIN charges ON users.id = charges.user_id GROUP BY email📌7. Делайте группировку по имени поля, а не по номеру. Хотя вот статья в защиту номераПлохо:SELECT department, position, count(id) AS count_empl FROM empl GROUP BY 1, 2Хорошо:SELECT department, position, count(id) AS count_empl FROM empl GROUP BY department, position📌8. Записывайте прописными буквами зарезервированные слова. Плохо:select user_id from emplХорошо:SELECT user_id FROM emplЛично мне проще читать код, когда вижу upper case, но в автоматизированных форматтерах это можно регулировать.📌9. Запятые в начале vs запятые в конце (commas-first/last) + каждое поле в новой строкеМне лично нравится ставить запятую в конце. Плохо:select id, email from usersХорошо:SELECT id, email FROM users📌10. Выравнивание по левому краю. Даже не знаю, что вызывает больше споров: выравнивание или запятые. Я выравниваюсь по левому краю.Заключение:В vs code есть различные форматтеры, так что установите себе что-то подобное и жизнь станет проще. либо в DataGrip/DBeaver настройте нужное. Полный гайд с лучшими практиками можно скачать тут. Но хочу все же подчеркнуть, что какой-то единой истины нет в плане форматирования.А на какой вы стороне: commas-first или last?#sql #dataanalytics Пишите в комментариях 👇