Wie schreibe ich eine SQL-Abfrage, um die Gesamtzahl eines bestimmten num-Werts in der num-Spalte einer Tabelle zu zählen?
zB wählen wo num = 1
Ergebnis: 2
+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM | 1 |
+-----+-----+
| BOB | 1 |
+-----+-----+
| JAKE | 2 |
+-----+-----+
| JOHN | 4 |
+-----+-----+
Antworten:
Versuchen
SELECT NAME, count(*) as NUM FROM tbl GROUP BY NAME
SQL FIDDLE
quelle
HAVING
Operatoren wieGROUP BY ... HAVING COUNT(*) > ...
Wenn Sie das Ergebnis für alle Werte von haben möchten
NUM
:SELECT `NUM`, COUNT(*) AS `count` FROM yourTable GROUP BY `NUM`
Oder nur für eine bestimmte:
SELECT `NUM`, COUNT(*) AS `count` FROM yourTable WHERE `NUM`=1
quelle
FÜR SPEZIFISCHE NUMMER:
SELECT COUNT(1) FROM YOUR_TABLE WHERE NUM = 1
FÜR ALLE NUMEN:
SELECT NUM, COUNT(1) FROM YOUR_TABLE GROUP BY NUM
quelle
SELECT COUNT(NUM) as 'result' FROM Table1 GROUP BY NUM HAVING NUM = 1
quelle
having num = 1
ist gleichbedeutend mitwhere num =
, also ist es nicht falsch und es ist nicht "macht keinen Sinn". Ich fand es erfrischend anders, es so zu machen als konventionellerwhere
. Die Äquivalenz ist auf den ersten Blick nicht offensichtlich, daher würde ich empfehlen, sie selbst auszuprobieren.where
es das gleiche ist, warum verwendenhaving
?having
ist für Kriterien auf Gruppenebene;where
ist für Kriterien auf Zeilenebene. Sie können im Allgemeinen nicht ausgetauscht werden. In diesem speziellen Grenzfall können sie jedoch ausgetauscht werden. Daher ist die Ausgabe gleich. Aber philosophisch denke ich anNUM
ein Kriterium auf Gruppenebene, da die Gruppe vonNUM
selbst durchgeführt wird. Deshalb schätze ichhaving
stattwhere
. Sie werden mein abstraktes Anliegen wahrscheinlich nicht zugunsten eines anderen Anliegens schätzen, sondern es nur erklären, damit Sie nicht glauben, dass ich total verrückt bin.Versuchen Sie diese Abfrage
select NUM, count(1) as count from tbl where num = 1 group by NUM --having count(1) (You condition)
SQL FIDDLE
quelle
SELECT sum(num) WHERE num = 1;
quelle
count
?1.
Was ist, wenn OP willwhere num=2
.2
Außerdem wird diese Abfrage zurückkehrenerror
, da sie das nicht angibttablename
.SELECT SUM(IF(your_column=3,1,0)) FROM your_table WHERE your_where_contion='something';
zB für Sie fragen: -
SELECT SUM(IF(num=1,1,0)) FROM your_table_name;
quelle
Verwenden Sie diese Abfrage, um Ihre Ausgabe zu erhalten:
select t.name ,( select count (*) as num_value from Table where num =t.num) cnt from Table t;
quelle