¿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 NAMEViolín SQL
fuente
HAVINGoperador, 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`=1fuente
PARA NÚMERO ESPECÍFICO:
SELECT COUNT(1) FROM YOUR_TABLE WHERE NUM = 1PARA TODOS LOS NUM:
SELECT NUM, COUNT(1) FROM YOUR_TABLE GROUP BY NUMfuente
SELECT COUNT(NUM) as 'result' FROM Table1 GROUP BY NUM HAVING NUM = 1fuente
having num = 1es 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.wherees lo mismo, ¿para qué usarlohaving?havinges para criterios a nivel de grupo;wherees 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 consideroNUMun criterio a nivel de grupo, ya que el grupo se hace sobreNUMsí mismo. Por eso lo agradezco enhavinglugar 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?2Ademá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