Падлічыце, колькі радкоў маюць аднолькавае значэнне

Як я напісаць запыт SQL, каб падлічыць агульную колькасць вызначанага значэння NUM ў Стоўбцах NUM табліцы.

напрыклад выбраць, дзе нумар = 1

Вынік: 2

+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM  |  1  | 
+-----+-----+
| BOB  |  1  |
+-----+-----+
| JAKE |  2  | 
+-----+-----+  
| JOHN |  4  | 
+-----+-----+
51
@Luv, я upvoted свайго адказу. гэтае пытанне кластар # @ $ @ з-за неадназначнасці і прастаты.
дададзена аўтар necromancer, крыніца
што матывуе так шмат паўтаральных адказаў на такі просты, але дрэнна пастаўленае пытанне? Ўздых ... павінны пазбягаць глядзець у працэс каўбасных вырабаў!
дададзена аўтар necromancer, крыніца
@randomstring Мець см на мой адказ, і скрыпку таксама
дададзена аўтар Luv, крыніца

7 адказы

спрабаваць

SELECT NAME, count(*) as NUM FROM tbl GROUP BY NAME

<�Моцны> SQL FIDDLE

83
дададзена

ДЛЯ канкрэтных NUM:

SELECT COUNT(1) FROM YOUR_TABLE WHERE NUM = 1

ДЛЯ ЎСІХ NUM:

SELECT NUM, COUNT(1) FROM YOUR_TABLE GROUP BY NUM
13
дададзена

Калі вы хочаце мець вынік для ўсіх значэнняў NUM :

SELECT `NUM`, COUNT(*) AS `count` 
FROM yourTable
GROUP BY `NUM`

Ці толькі для аднаго канкрэтнага:

SELECT `NUM`, COUNT(*) AS `count` 
FROM yourTable
WHERE `NUM`=1
12
дададзена
Гэта сапраўды правільны адказ на гэтае пытанне.
дададзена аўтар Jay, крыніца
SELECT 
   COUNT(NUM) as 'result' 
FROM 
   Table1 
GROUP BY 
   NUM 
HAVING NUM = 1
6
дададзена
@NickN. <�Код>, які мае для крытэрыяў на ўзроўні групы; <�Код>, дзе для крытэрыяў на ўзроўні радкоў. Яны не могуць быць ўзаемазаменнымі ў цэлым. У гэтым асаблівым выпадку межавым аднак, яны могуць быць ўзаемазаменнымі. Таму выхад тое ж самае. Але, па-філасофску я думаю NUM у якасці крытэрыяў на ўзроўні групы, так як група па робіцца на NUM сам па сабе. Таму я цаню , які мае замест , дзе . Вы, верагодна, не шануюць сваю абстрактную заклапочанасць у карысць нейкага іншага турботы, а проста растлумачыць гэта, так што вы не думаеце, што я зусім вар'ят.
дададзена аўтар necromancer, крыніца
@NickN. <�Код>, які мае Num = 1 эквівалентна , дзе Num = , так што гэта не так, і гэта не «не мае сэнсу». Я думаў, што гэта было асвяжальна адрозніваецца зрабіць гэта такім чынам, а не больш звычайнага , дзе . Эквівалентнасць не відавочна на першы погляд, так што я б параіў паспрабаваць яго самастойна.
дададзена аўтар necromancer, крыніца
upvoted для , які мае
дададзена аўтар necromancer, крыніца
@necromancer я да гэтага часу не бачу, так як , дзе той жа, навошта выкарыстоўваць , які мае ?
дададзена аўтар Nick N., крыніца
@necromancer калі ласка, растлумачце, чаму тое, трэба тут? гэта не мае сэнсу выкарыстоўваць, маючы ў гэтым кантэксце. Калі б ён выкарыстаў яго для параўнання сукупнасці, то гэта было upvote годна.
дададзена аўтар Nick N., крыніца
@necromancer, дзякуй за тлумачэнне дэталі рэшты. Гэта робіць шмат сэнсу ў цяперашні час. Дзякуй за добрае абмеркаванне!
дададзена аўтар bizi, крыніца

Паспрабуйце гэты запыт

select NUM, count(1) as count 
from tbl 
where num = 1
group by NUM
--having count(1) (You condition)

<�Моцны> SQL FIDDLE

3
дададзена
дзякуй, але не трэба - я зарабляю сабе рэпутацыю цяжкі шлях і да таго ж сістэма выяўляе і ліквідуе іх, незалежна!
дададзена аўтар necromancer, крыніца
маючы лічыльнік (1) ??
дададзена аўтар necromancer, крыніца
@randomstring Калі ласка, звярніцеся скрыпку. :)
дададзена аўтар Luv, крыніца
SELECT sum(num) WHERE num = 1;
1
дададзена
Вы не азначае, што рахункі ?
дададзена аўтар necromancer, крыніца
Эй, вы маеце рацыю! чувак ёсць адзін адзіны правільны адказ, гэта адзін!
дададзена аўтар necromancer, крыніца
@Luv, я згодны. гэтае пытанне з'яўляецца беспарадак.
дададзена аўтар necromancer, крыніца
@ 0xAli Тады таксама яго няправільны адказ, мы не можам выкарыстоўваць сума() замест COUNT() . Калі ласка, звярніцеся гэта <�б> Fiddle
дададзена аўтар Luv, крыніца
@randomstring Гэта зусім няправільна запыт. <�Б> 1. Што рабіць, калі ОП хоча , дзе Num = 2 . 2 Акрамя таго, гэты запыт збіраецца вяртанне Памылка , так як ён не вызначае имя_таблицы .
дададзена аўтар Luv, крыніца
Ён функцыянуе па прызначэнні, вынік: 2 «1» + «1» у якасці двух значэнняў якiя вяртаюцца радкоў не граф іх я добра ведаю пра гэта, але я думаю, што гэта тое, што ОП хацеў зрабіць .. я магу памыляцца. але дзякуй за спробу выправіць мяне - заўсёды цэніцца.
дададзена аўтар 0xAli, крыніца
@Luv, вы маеце рацыю, але ОП не далі імя табліцы, у першую чаргу, так што я прызначаны гэта як псеўда-запыту нічога больш.
дададзена аўтар 0xAli, крыніца
Не, сэр, AFAIK ён не хоча, каб сума значэнняў не з'яўленне лікаў.
дададзена аўтар 0xAli, крыніца

<�Код> SELECT SUM (IF (your_column = 3,1,0)) FROM your_table WHERE your_where_contion = 'нешта';

напрыклад для вас запыт: -

<�Код> SELECT SUM (IF (Num = 1,1,0)) АД your_table_name;

0
дададзена