2017-05-03 12 views
1

私はこれに似て探してMySQLの-dbテーブルを持っている:SQL数とグループ

date  class_one class_two class_three 
2017-05-03 3   1   1 
2017-05-04 0   2   0 
2017-05-05 2   0   3 
2017-05-06 2   2   3 
2017-05-07 2   2   0 
2017-05-08 1   1   0 
2017-05-09 2   1   2 
2017-05-10 1   0   0 
2017-05-11 3   1   1 
2017-05-12 0   2   4 
:私は、各日付の各クラスの何を見つけたい

id date  class more_info_one more_info_two etc 
1 2017-05-03 1  …    …    … 
2 2017-05-03 3  …    …    … 
3 2017-05-11 1  …    …    … 
4 2017-05-05 1  …    …    … 
5 2017-05-12 2  …    …    … 
6 2017-05-05 1  …    …    … 
7 2017-05-04 2  …    …    … 
8 2017-05-06 3  …    …    … 
9 2017-05-12 3  …    …    … 
10 2017-05-07 2  …    …    … 
11 2017-05-09 1  …    …    … 
12 2017-05-09 3  …    …    … 
13 2017-05-11 1  …    …    … 
14 2017-05-09 1  …    …    … 
15 2017-05-04 2  …    …    … 
16 2017-05-10 1  …    …    … 
17 2017-05-03 2  …    …    … 
18 2017-05-12 3  …    …    … 
19 2017-05-12 3  …    …    … 
20 2017-05-06 2  …    …    … 
21 2017-05-03 1  …    …    … 
22 2017-05-09 3  …    …    … 
23 2017-05-06 1  …    …    … 
24 2017-05-08 1  …    …    … 
25 2017-05-11 2  …    …    … 
26 2017-05-03 1  …    …    … 
27 2017-05-09 2  …    …    … 
28 2017-05-06 3  …    …    … 
29 2017-05-12 3  …    …    … 
30 2017-05-06 2  …    …    … 
31 2017-05-07 1  …    …    … 
32 2017-05-11 3  …    …    … 
33 2017-05-07 1  …    …    … 
34 2017-05-06 1  …    …    … 
35 2017-05-08 2  …    …    … 
36 2017-05-11 1  …    …    … 
37 2017-05-12 2  …    …    … 
38 2017-05-06 3  …    …    … 
39 2017-05-05 3  …    …    … 
40 2017-05-07 2  …    …    … 

ので、私は次のような結果を得ます

SQLを使用してこれを行うにはどうすればよいですか?私は、私が数え、グループ化したり、多分いくつかの参加する必要があると推測していますが、私はどのように把握できません。

答えて

4

あなたは条件付きの集約を使用することができます。

select date, sum(class = 1) as class_1, sum(class = 2) as class_2, 
     sum(class = 3) as class_3 
from t 
group by date 
order by date; 

これは整数としてブール式を扱うMySQLで短期の手を使用しています。上記の各sum()sum(case when class = 1 then 1 else 0 end)と同等です。