¿Cómo escribo una consulta SQL para contar el número total de un valor numérico específico en la columna num de una tabla?
por ejemplo, seleccione donde num = 1
resultado: 2
+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM | 1 |
+-----+-----+
| BOB | 1 |
+-----+-----+
| JAKE | 2 |
+-----+-----+
| JOHN | 4 |
+-----+-----+
Respuestas:
Tratar
SELECT NAME, count(*) as NUM FROM tbl GROUP BY NAME
Violín SQL
fuente
HAVING
operador, comoGROUP BY ... HAVING COUNT(*) > ...
Si desea obtener el resultado para todos los valores de
NUM
:SELECT `NUM`, COUNT(*) AS `count` FROM yourTable GROUP BY `NUM`
O solo para uno específico:
SELECT `NUM`, COUNT(*) AS `count` FROM yourTable WHERE `NUM`=1
fuente
PARA NÚMERO ESPECÍFICO:
SELECT COUNT(1) FROM YOUR_TABLE WHERE NUM = 1
PARA TODOS LOS NUM:
SELECT NUM, COUNT(1) FROM YOUR_TABLE GROUP BY NUM
fuente
SELECT COUNT(NUM) as 'result' FROM Table1 GROUP BY NUM HAVING NUM = 1
fuente
having num = 1
es equivalente awhere num =
, por lo que no está mal y no es "no tiene sentido". Pensé que era refrescantemente diferente hacerlo de esta manera en lugar de hacerlo de la manera más convencionalwhere
. La equivalencia no es obvia a primera vista, así que te animo a que la pruebes tú mismo.where
es lo mismo, ¿para qué usarlohaving
?having
es para criterios a nivel de grupo;where
es para criterios de nivel de fila. No se pueden intercambiar en general. Sin embargo, en este caso límite especial, se pueden intercambiar. Por tanto, la salida es la misma. Pero, filosóficamente, lo consideroNUM
un criterio a nivel de grupo, ya que el grupo se hace sobreNUM
sí mismo. Por eso lo agradezco enhaving
lugar dewhere
. Probablemente no apreciará mi preocupación abstracta a favor de alguna otra preocupación, sino simplemente explicándola para que no crea que estoy totalmente loco.Prueba esta consulta
select NUM, count(1) as count from tbl where num = 1 group by NUM --having count(1) (You condition)
Violín SQL
fuente
SELECT sum(num) WHERE num = 1;
fuente
1.
¿Y si OP quierewhere num=2
?2
Además, esta consulta volveráerror
, ya que no especifica eltablename
.SELECT SUM(IF(your_column=3,1,0)) FROM your_table WHERE your_where_contion='something';
por ejemplo, para su consulta: -
SELECT SUM(IF(num=1,1,0)) FROM your_table_name;
fuente
Use esta consulta, esto le dará su salida:
select t.name ,( select count (*) as num_value from Table where num =t.num) cnt from Table t;
fuente