Entiendo el punto de GROUP BY x
Pero, ¿cómo
GROUP BY x, y
funciona y qué significa?
Entiendo el punto de GROUP BY x
Pero, ¿cómo
GROUP BY x, y
funciona y qué significa?
Respuestas:
Group By X
significa poner a todos aquellos con el mismo valor para X en un grupo .
Group By X, Y
significa poner a todos aquellos con los mismos valores para X e Y en un grupo .
Para ilustrar el uso de un ejemplo, digamos que tenemos la siguiente tabla, que tiene que ver con quién asiste a qué materia en una universidad:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Cuando usa un solo group by
en la columna de asunto; decir:
select Subject, Count(*)
from Subject_Selection
group by Subject
Obtendrás algo como:
Subject Count
------------------------------
ITB001 5
MKB114 2
... porque hay 5 entradas para ITB001 y 2 para MKB114
Si fuéramos a group by
dos columnas:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
obtendríamos esto:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Esto se debe a que, cuando agrupamos por dos columnas, está diciendo "Agrúpelos para que todos aquellos con el mismo Asunto y Semestre estén en el mismo grupo, y luego calcule todas las funciones agregadas (Cuenta, Suma, Promedio, etc.) ) para cada uno de esos grupos " . En este ejemplo, esto se demuestra por el hecho de que, cuando los contamos, hay tres personas que hacen ITB001 en el semestre 1, y dos que lo hacen en el semestre 2. Ambas personas que hacen MKB114 están en el semestre 1, por lo que no hay fila del semestre 2 (no hay datos en el grupo "MKB114, semestre 2")
Esperemos que tenga sentido.
GROUP BY A,B
es lo mismo que GROUP BY B,A
?
GROUP BY a, b
y GROUP BY a AND b
dado que el segundo solo enumera los elementos agrupados con exactamente el mismo contenido y sin "subgrupos". En este caso, la salida sería la misma que la primera.
La GROUP BY
cláusula se usa junto con las funciones agregadas para agrupar el conjunto de resultados por una o más columnas. p.ej:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Recuerda esta orden:
1) SELECCIONAR (se utiliza para seleccionar datos de una base de datos)
2) FROM (la cláusula se usa para enumerar las tablas)
3) DONDE (la cláusula se usa para filtrar registros)
4) GROUP BY (la cláusula se puede usar en una instrucción SELECT para recopilar datos en varios registros y agrupar los resultados en una o más columnas)
5) HAVING (la cláusula se usa en combinación con la cláusula GROUP BY para restringir los grupos de filas devueltas solo a aquellos cuya condición es VERDADERA)
6) ORDER BY (la palabra clave se usa para ordenar el conjunto de resultados)
Puede usar todo esto si está utilizando funciones agregadas, y este es el orden en que deben establecerse; de lo contrario, puede obtener un error.
Las funciones agregadas son:
MIN devuelve el valor más pequeño en una columna dada
SUM devuelve la suma de los valores numéricos en una columna dada
AVG devuelve el valor promedio de una columna dada
COUNT devuelve el número total de valores en una columna dada
COUNT (*) devuelve el número de filas en una tabla