Cuando ejecute la siguiente instrucción SQL:no SQL una función de grupo de un solo grupo
SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Devuelve el valor máximo suma de las descargas por un cliente, sin embargo, si trato de encontrar el número de la seguridad social que esa valor máximo pertenece a añadiéndolo a la instrucción de selección:
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
me sale el siguiente error:
not a single-group group function
No entiendo por qué está arrojando este error. Una búsqueda en Google se le ocurrió la siguiente acción:
gota o bien la función de grupo o la expresión columna individual de la lista SELECT o añadir una cláusula GROUP BY que incluye todas las expresiones de columna individuales enumerados
Por lo que creo que esto está diciendo - soltar la función de grupo hace que el valor de suma sea inválido - droping la expresión de columna individual (SSN) me dará la suma máxima - no estoy seguro acerca de esa tercera parte.
¿Alguien podría guiar en la dirección correcta?
-Tomek
EDIT: TIME en esta base de datos se refiere al número de veces descargado
Estoy utilizando Oracle y no estoy familiarizado con agarrar filas específicas.Sin embargo, ¿qué pasa si hay clientes que están atados por tener la cantidad máxima de descargas? – Tomek
Si hubiera múltiples con la misma cantidad, esencialmente sería al azar lo que obtuviste (Probablemente haya un pedido en un nivel bajo, pero no lo sabría ni confiaría en él). Puede agregar cláusulas adicionales al pedido si desea especificar cómo ordenarlo usted mismo. Si quieres vincular a todos los primeros, creo que necesitarás consultas anidadas, una para obtener el tiempo máximo y otro para retirar todos los que lo cumplan (Algo así como "SELECCIONAR SSN, SUM (TIME) FROM descargas GRUPO POR SSN TENIENDO SUMA (TIEMPO) = (SELECCIONE MAX (SUMA (TIEMPO)) DESDE descargas GROUP BY SSN)) ") – fyjham
PD: No estoy 100% seguro de si HAVING existe en Oracle - alguien más puede aclarar eso. La mayoría de mi experiencia es TSQL. – fyjham