¿Qué significa la cláusula SQL "GROUP BY 1"?

Alguien me envió una consulta SQL donde la cláusula GROUP BY consistía en la statement: GROUP BY 1 .

Esto debe ser un error tipográfico ¿verdad? Ninguna columna recibe el alias 1. ¿Qué podría significar? ¿Tengo razón en suponer que esto debe ser un error tipográfico?

Significa agrupar en la primera columna independientemente de cómo se llame. Usted puede hacer lo mismo con ORDER BY .

 SELECT account_id, open_emp_id ^^^^ ^^^^ 1 2 FROM account GROUP BY 1; 

En la consulta anterior GROUP BY 1 refiere a la first column in select statement que es account_id .

También puede especificar en ORDER BY .

 Note : The number in ORDER BY and GROUP BY always start with 1 not with 0. 

Además de agrupar por el nombre del campo, también puede agrupar por ordinal, o colocar el campo es.

Esto generalmente no se recomienda si se está agrupando en algo específico, ya que la estructura de la tabla / vista puede cambiar; además, es más difícil de leer (crédito: Yuck ). Sin embargo, si devuelve un set único de algo, entonces está bien.

Se agrupará por el primer campo en la cláusula de selección

Se agrupará por la position de la columna que coloque después de la cláusula group by.

por ejemplo, si ejecuta ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1 ', se SALESMAN_NAME por SALESMAN_NAME .

Un riesgo al hacer esto es si ejecuta ' Select * ' y, por alguna razón, recrea la tabla con columnas en un order diferente, le dará un resultado diferente del esperado.

Eso significa grupo sql por primera columna en su cláusula de selección, siempre usamos este GROUP BY 1 junto con ORDER BY 1 , además usted también puede usar este GROUP BY 1,2,3.. , por supuesto, es conveniente para nosotros, pero debe prestar atención a esa condición, el resultado puede no ser el deseado si alguien ha modificado sus columnas de selección y no se visualiza