MySql: 'SUM IF' 또는 'COUNT IF'가 가능합니까?
'hour' 열이 있고 'kind' 열이 있습니다(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() 함수는 항상 3개의 인수를 사용하기 때문에 다음과 같이 해야 합니다.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
'programing' 카테고리의 다른 글
Eclipse 가져오기의 주요 바로 가기 (0) | 2022.12.11 |
---|---|
잘못된 조합 혼합입니다(utf8_unicode_ci,IMPLICAT) 및 (utf8_general_ci,'=' 작업에 대한 IMPLICATE) (0) | 2022.12.11 |
BOM을 사용하여 UTF-8 파일을 검색하는 우아한 방법? (0) | 2022.12.11 |
mocha의 기본 시간 초과 변경 (0) | 2022.12.11 |
Jest에서의 ESLint 사용방법 (0) | 2022.12.01 |