promedio - sql contar registros agrupados
Cómo usar count y group by en la misma instrucción select (10)
Con Oracle puedes usar funciones analíticas:
select town, count(town), sum(count(town)) over () total_count from user
group by town
Sus otras opciones es usar una subconsulta:
select town, count(town), (select count(town) from user) as total_count from user
group by town
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 forma de hacerlo directamente desde sql? Por ejemplo, al tener una mesa 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 la cantidad de usuarios en todas las filas.
Un ejemplo del resultado para tener 3 ciudades y 58 usuarios en total es:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Esto hará lo que quiera (lista de ciudades, con el número de usuarios en cada una):
select town, count(town)
from user
group by town
Puede usar la mayoría de las funciones agregadas cuando usa GROUP BY
.
Actualización (después del cambio a pregunta y comentarios)
Puede declarar una variable para la cantidad de usuarios y establecerla en la cantidad de usuarios, luego seleccione con eso.
DECLARE @numOfUsers INT
SET @numOfUsers = SELECT COUNT(*) FROM user
SELECT DISTINCT town, @numOfUsers
FROM user
La otra forma es:
/* Number of rows in a derived table called d1. */
select count(*) from
(
/* Number of times each town appears in user. */
select town, count(*)
from user
group by town
) d1
Pruebe el siguiente código:
select ccode, count(empno)
from company_details
group by ccode;
Puede usar COUNT(DISTINCT ...)
:
SELECT COUNT(DISTINCT town)
FROM user
Puede usar DISTINCT dentro de COUNT como lo que dijo milkovsky
en mi caso:
select COUNT(distinct user_id) from answers_votes where answer_id in (694,695);
Esto hará que el recuento de votos de respuesta se considere el mismo ID de usuario que un recuento
Sé que esta es una publicación anterior, en SQL Server:
select isnull(town,''TOTAL'') Town, count(*) cnt
from user
group by town WITH ROLLUP
Town cnt
Copenhagen 58
NewYork 58
Athens 58
TOTAL 174
Si desea seleccionar la ciudad y el recuento total de usuarios, puede usar esta consulta a continuación:
SELECT Town, (SELECT Count(*) FROM User) `Count` FROM user GROUP BY Town;
Si quieres ordenar por conteo (suena simple pero no puedo encontrar una respuesta en la pila de cómo hacerlo) puedes hacer:
SELECT town, count(town) as total FROM user
GROUP BY town ORDER BY total DESC
si desea usar Seleccionar todas las consultas con la opción de conteo, intente esto ...
select a.*, (Select count(b.name) from table_name as b where Condition) as totCount from table_name as a where where Condition