0

ユーザー名に「赤」が含まれ、月ごとにグループ化されたテーブル (履歴) の SUM に基づいて結果を取得したいと思います。ここでクエリ:

select month(date),
SUM(CASE WHEN status='success' THEN 1 ELSE 0 END) as total_sucess, 
SUM(CASE WHEN status='failed' THEN 1 ELSE 0 END) as total_failed
from history
where date between '201305%' AND '201311%'  AND username like '%@red%' 
GROUP BY month(history.date);

結果 :

+------------+--------------+--------------+
| month(date) | total_sucess | total_failed |
+------------+--------------+--------------+
|          5 |        10960 |         3573 |
|          6 |         2336 |         1202 |
|          7 |         2211 |         1830 |
|          8 |         5312 |         3125 |
|          9 |         9844 |         5407 |
|         10 |         6351 |         3972 |
+------------+--------------+--------------+

問題は、total_success と total_failed SUM を区別するにはどうすればよいですか? 1回のクエリで?

私はこれを使ってみました

select month(tgl),
SUM(CASE WHEN status='success' THEN 1 ELSE 0 END) as total_sucess, 
SUM(DISTINCT (username) CASE WHEN status='success' THEN 1 ELSE 0 END) as distinct_total_sucess, 
SUM(CASE WHEN status='failed' THEN 1 ELSE 0 END) as total_failed,
SUM(DISTINCT (username) CASE WHEN status='failed' THEN 1 ELSE 0 END) as distinct_failed_sucess
from history_auth
where tgl between '201305%' AND '201311%'  AND username like '%@t.sel%' 
GROUP BY month(history_auth.tgl);

しかし、エラーSQL構文を取得します...私はこれについてはわかりません:(

4

1 に答える 1