Programming style, also known as code style, is a set of rules or guidelines used when writing the source code for a computer program. It is often claimed that following a particular programming style will help programmers read and understand source code conforming to the style, and help to avoid introducing errors. (Source: Wikipedia)
-- this is a comment
SELECT *
FROM table_name -- this is another comment (e.g. TODO)
;
LIMIT:SELECT
  column_name,
  column_name,
  column_name
FROM table_name
LIMIT n_rows
;
ORDER BY column name:SELECT
  column_name,
  column_name,
  column_name
FROM table_name
ORDER BY
  column_name,
  column_name DESC,
  column_name
;
ORDER BY column position:SELECT
  column_name,
  column_name,
  column_name
FROM table_name
ORDER BY 1, 2 DESC, 3
;
SELECT
  column_name,
  SQL_FUNCTION(column_name) AS alias_column_name, -- e.g. UPPER(column)
FROM table_name
;
CASE WHEN:SELECT
  column_name,
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE elsecondition
  END AS alias_column_name
FROM table_name
;
WHERE filters:SELECT *
FROM table_name
WHERE condition1
  AND condition2 -- river formatting optional, can just use `tab` or `4 spaces`
   OR condition3
;   
DISTINCT:SELECT DISTINCT
  column_name,
  column_name  
FROM table_name
;
GROUP BY aggregations, grouping by column positions:SELECT
  column_name,
  column_name,
  ...
  AGGREGATION_FUNCTION(column_name),
  AGGREGATION_FUNCTION(column_name)
  ...
FROM table_name
GROUP BY 1, 2 ...
;
GROUP BY aggregations, grouping by column positions, with filters using HAVING:SELECT
  column_name,
  column_name,
  ...
  AGGREGATION_FUNCTION(column_name),
  AGGREGATION_FUNCTION(column_name)
  ...
FROM table_name
GROUP BY 1, 2 ...
HAVING aggregation_condition1
   AND aggregation_condition2
    OR aggregation_condition3   
;
GROUP BY aggregations, grouping by column names:SELECT
  column_name,
  column_name,
  ...
  AGGREGATION_FUNCTION(column_name),
  AGGREGATION_FUNCTION(column_name),
  ...
FROM table_name
GROUP BY
  column_name,
  column_name ...
;
GROUP BY aggregations, grouping by column names, with optional filters using HAVING:SELECT
  column_name,
  column_name,
  ...
  AGGREGATION_FUNCTION(column_name),
  AGGREGATION_FUNCTION(column_name),
  ...
FROM table_name
GROUP BY
  column_name,
  column_name ...
HAVING aggregation_condition1
   AND aggregation_condition2
    OR aggregation_condition3   
;
JOINs and table aliasing:SELECT
  table_alias_1.column_name,
  table_alias_2.column_name
FROM table_name_1 table_alias_1  
INNER JOIN table_name_2 table_alias_2
  ON table_alias_1.column_key = table_alias_2.column_key
INNER JOIN table_name_3 table_alias_3
  ON table_alias_1.column_key = table_alias_3.column_key
;
UNION or UNION ALL:SELECT
  column_name,
  column_name,
  ...
FROM table_name_1
UNION [ALL]
SELECT
  column_name,
  column_name,
  ...
FROM table_name_2
ORDER BY
  column_name,
  column_name DESC,
  column_name
LIMIT BY n
;
SELECT clause:SELECT
  column_name,
  (SELECT AGGREGATION_FUNCTION(column_name) FROM table_name) AS alias_column_name
FROM table_name
;  
IN subquery in the WHERE clause:SELECT *
FROM table_name
WHERE column_name IN (SELECT column_name FROM table_name)
;
SELECT *
FROM (
  SELECT
    column_name,
    column_name
  FROM table_name    
  )
WHERE ...  
GROUP BY ...
;
WITH:WITH cte_name_1 AS (
  SELECT
    column_name,
    column_name,
    ...
  FROM table_name
  )
, cte_name_2 AS (
  SELECT
    column_name,
    column_name,
    ...
  FROM table_name
  )
SELECT *
FROM table_name
INNER JOIN cte_name_1
  ON table_name.column_key = cte_name_1.column_key
INNER JOIN cte_name_2
  ON table_name.column_key = cte_name_2.column_key
;
Do’s:
SELECT, FROM, LIMIT)employees, firstname); and then hit EnterUPPER())CASE WHEN statementsAvoid:
_ to separate the words. (e.g. use column_name, not ColumnName)Optional:
Comments are optional, but as your SQL queries get long and complex, this can be helfpul for you to mark TODOs and come back to later.
Some style guides online recommend river formatting. IDes such as PgAdmin usually have auto formatting options built in.