Tengo una consulta de selección SQL que tiene un grupo por. Quiero contar todos los registros después del grupo por declaración. ¿Hay alguna manera para esto directamente desde sql? Por ejemplo, al tener una tabla con usuarios, quiero seleccionar las diferentes ciudades y el número total de usuarios
select town, count(*) from user
group by town
Quiero tener una columna con todas las ciudades y otra con el número de usuarios en todas las filas.
Un ejemplo del resultado de tener 3 ciudades y 58 usuarios en total es:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Respuestas:
Esto hará lo que quieras (lista de pueblos, con el número de usuarios en cada uno):
Puede usar la mayoría de las funciones agregadas al usar
GROUP BY
.Actualización (siguiente cambio a pregunta y comentarios)
Puede declarar una variable para el número de usuarios y establecerla en el número de usuarios y luego seleccionar con eso.
fuente
*
... El OP respondió su propia pregunta, pero ni siquiera parecía probarlo, solo estoy validando que es correcto :) fredosaurus.com/notes-db/select/groupby.htmlPuedes usar
COUNT(DISTINCT ...)
:fuente
town
columna, y esCOUNTs
incorrecta (ciudad en lugar de usuario).La otra forma es:
fuente
Con Oracle puede usar funciones analíticas:
Sus otras opciones son usar una subconsulta:
fuente
Si desea ordenar por conteo (suena simple pero no puedo encontrar una respuesta en la pila de cómo hacerlo), puede hacer:
fuente
Diez respuestas no eliminadas; la mayoría no hace lo que el usuario le pidió. La mayoría de las respuestas malinterpretan la pregunta porque piensan que hay 58 usuarios en cada ciudad en lugar de 58 en total. Incluso los pocos que son correctos no son óptimos.
SHOW session status LIKE 'Handler%';
En el contexto del OP:
Como solo hay una fila
tot
,CROSS JOIN
no es tan voluminosa como podría ser.El patrón habitual es en
COUNT(*)
lugar deCOUNT(town)
. Esto último implica verificartown
que no sea nulo, lo cual es innecesario en este contexto.fuente
Puedes usar DISTINCT dentro de COUNT como lo que dijo milkovsky
en mi caso:
Esto extraerá el recuento de votos de respuesta considerados el mismo user_id que un recuento
fuente
Sé que esta es una publicación anterior, en SQL Server:
fuente
IFNULL
lugar deISNULL
) conduce a números diferentes para cada ciudad; El usuario quería el total. Según la pregunta, 58, no 174, es el total.Si desea seleccionar la ciudad y el recuento total de usuarios, puede usar esta consulta a continuación:
fuente
User
.si desea utilizar la opción Seleccionar todas las consultas con conteo, intente esto ...
fuente
Prueba el siguiente código:
fuente