2011-09-15 28 views
29

Supongamos que tengo una tabla Tab1 con atributos - a1, a2, ... etc. Ninguno de los atributos es único.¿Cómo funciona GROUP BY?

¿Cuál será la naturaleza de la siguiente consulta? ¿Devolverá una sola fila siempre?

SELECT a1, a2, sum(a3) FROM Tab1 GROUP BY a1, a2 
+4

Devolverá una fila por combinación única (o grupo) de a1 y a2. Si solo hay una combinación única, solo obtendrá una fila. –

+2

Y la suma le dirá cuántas filas terminaron en cada grupo =) – jadarnel27

Respuesta

51

GROUP BY devuelve una sola fila para cada combinación única de los campos GROUP BY. Por lo tanto, en su ejemplo, cada combinación distinta de (a1, a2) que aparece en filas de Tab1 da como resultado una fila en la consulta que representa el grupo de filas con la combinación dada de grupos por valores de campo. Las funciones agregadas como SUM() se calculan sobre los miembros de cada grupo.

13

GROUP BY devuelve una fila para cada combinación única de campos en la cláusula GROUP BY. Para garantizar solo una fila, debe usar una función de agregado: COUNT, SUM, MAX - sin una cláusula GROUP BY.

3

GROUP BY agrupa todos los registros idénticos.

SELECT COUNT(ItemID), City 
FROM Orders 
GROUP BY City; 

---------------------------------------- 
13 Sacrmento 
23 Dallas 
87 Los Angeles 
5 Phoenix 

Si no lo hace por grupo City se acaba de mostrar el recuento total de ItemID.