동일한 값을 가진 행 수 계산


80

테이블의 num 열에서 특정 num 값의 총 수를 계산하는 SQL 쿼리를 작성하는 방법은 무엇입니까?

예 : num = 1 인 경우 선택

결과 : 2

+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM  |  1  | 
+-----+-----+
| BOB  |  1  |
+-----+-----+
| JAKE |  2  | 
+-----+-----+  
| JOHN |  4  | 
+-----+-----+

@randomstring 내 대답에 대한 참조가 있고 바이올린도 있습니다
Prahalad Gaggar

@Luv, 나는 당신의 대답을 찬성했습니다. 이 질문은 모호성과 단순성 때문에 cluster # @ $ @입니다.
네크로맨서

단순하지만 잘못된 질문에 대해 중복 된 답변을 많이하는 이유는 무엇입니까? 한숨 ... 소시지 만드는 과정을 들여다 보지 말아야합니다!
necromancer 2013 년

답변:



17

당신의 모든 값에 대한 결과를 원한다면 NUM:

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

또는 하나의 특정 :

SELECT `NUM`, COUNT(*) AS `count` 
FROM yourTable
WHERE `NUM`=1

13

특정 숫자의 경우 :

SELECT COUNT(1) FROM YOUR_TABLE WHERE NUM = 1

모든 NUM :

SELECT NUM, COUNT(1) FROM YOUR_TABLE GROUP BY NUM

10
SELECT 
   COUNT(NUM) as 'result' 
FROM 
   Table1 
GROUP BY 
   NUM 
HAVING NUM = 1

@necromancer 설명 해주세요, 왜 여기에 필요합니까? 이 맥락에서 갖는 것을 사용하는 것은 의미가 없습니다. 그가 집계를 비교하는 데 사용했다면 그것은 찬성할만한 가치가 있습니다.
Nick N.

1
@NickN. having num = 1는와 동일 where num = 하므로 잘못된 것이 아니며 "말도 안되는"것도 아닙니다. 이런 식으로하는 것이 더 전통적인 방식이 아니라 상쾌하게 다른 것이라고 생각했습니다 where. 동등성은 첫눈에 분명하지 않으므로 직접 시도해 보는 것이 좋습니다.
necromancer

@necromancer 나는 여전히 그것을 보지 못한다. 똑같기 때문에 where왜 사용 having합니까?
Nick N.

5
@NickN. having그룹 수준 기준입니다. where행 수준 기준입니다. 일반적으로 교환 할 수 없습니다. 그러나이 특수한 경계의 경우 서로 교환 될 수 있습니다. 따라서 출력은 동일합니다. 그러나 철학적으로 NUM는 group by가 NUM자체적 으로 수행되기 때문에 그룹 수준의 기준 이라고 생각 합니다. 따라서 having대신 where. 당신은 아마도 다른 관심사에 찬성하는 내 추상적 인 관심사에 감사하지 않을 것입니다.
네크로맨서

1
@necromancer 님, 자세한 설명을 해주셔서 감사합니다. 이제 이치에 맞습니다. 좋은 토론에 감사드립니다!
bizi


1
SELECT sum(num) WHERE num = 1;

아니요, 아파 익 그는 숫자 발생이 아닌 값의 합계를 원합니다.
0xAli

이봐, 당신 말이 맞아! 정답이 하나뿐입니다.
네크로맨서

1
@randomstring 완전히 잘못된 쿼리입니다. 1.OP가 원한다면 어떨까요 where num=2. 2이 쿼리 외에거야 수익입니다 error그것은을 지정하지 않는 한, tablename.
Prahalad Gaggar 2013 년

@Luv, 동의합니다. 이 질문은 엉망입니다.
necromancer 2013 년

@Luv, 당신이 맞지만 OP는 처음에 테이블 이름을 제공하지 않았기 때문에 이것을 의사 쿼리로 더 이상 의도하지 않았습니다.
0xAli

1

SELECT SUM(IF(your_column=3,1,0)) FROM your_table WHERE your_where_contion='something';

예를 들어 쿼리 :-

SELECT SUM(IF(num=1,1,0)) FROM your_table_name;


-2

이 쿼리를 사용하면 출력이 제공됩니다.

select 
  t.name
  ,( select 
       count (*) as num_value 
     from Table 
      where num =t.num) cnt 
from Table t;

안녕 ! "o / p"의 의미를 알려주시겠습니까?
toshiro92

1
@ toshiro92는 일반적으로 출력을 의미하는
Tomerikoo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.