MySql : 'SUM IF'또는 'COUNT IF'가 가능합니까?
'시간'열이 있습니다. '종류'열이 있습니다 (1, 2 또는 3 일 수 있음).
다음과 같은 작업을하고 싶습니다.
SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne
또는
SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
하지만 mysql은 나에게 오류가 있다고 알려줍니다. 오류가 무엇입니까!?
이 stackoverflow 주제를 참조하십시오. MySQL SUM IF 필드 b = 필드 a
.. 답장 할 수 없습니다 ...
CASE
문을 사용할 수 있습니다 .
SELECT count(id),
SUM(hour) as totHour,
SUM(case when kind = 1 then 1 else 0 end) as countKindOne
당신은 다음과 같은 것을 원합니다.
SELECT count(id), SUM(hour) as totHour, SUM(kind=1) as countKindOne;
두 번째 예제는 가깝지만 IF () 함수는 항상 세 개의 인수를 사용하므로이어야 COUNT(IF(kind=1,1,NULL))
합니다. 간결하기 때문에 위에 표시된 SUM () 구문을 선호합니다.
다음 SUM + IF
보다 짧은 것을 사용할 수도 있습니다 SUM + CASE
.
SELECT
count(id)
, SUM(IF(kind=1, 1, 0)) AS countKindOne
, SUM(CASE WHEN kind=2 THEN 1 ELSE 0 END) AS countKindTwo
상위 답변, 즉 SUM(case when kind = 1 then 1 else 0 end)
과 간에 약간의 차이가 SUM(kind=1)
있습니다.
열의 모든 값 kind
이 NULL
인 경우의 결과 SUM(case when kind = 1 then 1 else 0 end)
는 0
인 반면의 결과는 SUM(kind=1)
입니다 NULL
.
예 ( http://sqlfiddle.com/#!9/b23807/2 ) :
개요:
CREATE TABLE Table1
(`first_col` int, `second_col` int)
;
INSERT INTO Table1
(`first_col`, `second_col`)
VALUES
(1, NULL),
(1, NULL),
(NULL, NULL)
;
쿼리 결과 :
SELECT SUM(first_col=1) FROM Table1;
-- Result: 2
SELECT SUM(first_col=2) FROM Table1;
-- Result: 0
SELECT SUM(second_col=1) FROM Table1;
-- Result: NULL
SELECT SUM(CASE WHEN second_col=1 THEN 1 ELSE 0 END) FROM Table1;
-- Result: 0
MYSQL에서 다음과 같은 문제를 해결했습니다.
SUM(CASE WHEN used = 1 THEN 1 ELSE 0 END) as amount_one,
이것이 도움이되기를 바랍니다 : D
다음과 같은 쿼리에서 여러 필드를 사용하여 Gavin Toweys 답변을 기반으로 작성할 수 있다는 점은 주목할 가치가 있습니다.
SUM(table.field = 1 AND table2.field = 2)
이 구문을 사용할 수도 있으며 COUNT
다른 기능도 확신합니다.
참고 URL : https://stackoverflow.com/questions/13075505/mysql-is-it-possible-to-sum-if-or-to-count-if
'Nice programing' 카테고리의 다른 글
Swift의 밑줄 버튼 텍스트 (0) | 2020.12.09 |
---|---|
문자열을 단어 목록으로 변환? (0) | 2020.12.09 |
우분투에 sbt 설치 (0) | 2020.12.09 |
여러 디렉토리에서 genstring을 사용하는 방법은 무엇입니까? (0) | 2020.12.09 |
PHP에서 문자열을 처음 20 개 단어로자를 수 있습니까? (0) | 2020.12.09 |