###前提・実現したいこと
mysqlでMAXやSUMをNULLを考慮して計算したいと思っています。
下のようなテーブにおいて、まずは
0. hc
,date
,soeji
の順で絞り込み、その中で最大のn_0
を取得したいです。その際、n_0
内にNULLがある場合は、返り値をNULLにしたいです。
0. そこで取得したテーブルの中で、次はhc
,date
で絞込み、先ほど取得したn_0
の合計値を取得したいです。この時も、合計値の計算の中でNULLがある場合はNULLを返したいです。
###使用しているテーブルの中身の一部
+------+---------+---------+------------+--------+------+
| hc | pc | soeji | date | people | n_0 |
+------+---------+---------+------------+--------+------+
| 1160 | 2115188 | dxa2s | 2014-01-01 | 2 | 0 |
| 1160 | 2115188 | dxa2s33 | 2014-01-01 | 3 | 5 |
| 1160 | 2115188 | mmr2s2 | 2014-01-01 | 2 | NULL |
+------+---------+---------+------------+--------+------+
###NULLを無視するソースコード
NULLを考慮しないでMAXやSUMを使ってのSQL文は下のように書くことが出来ました。
SQL
1SELECT 2`hc`, `date`, SUM(num) from 3(SELECT `hc`,`date`,`soeji`,max(n_0) as num from kyoto_basic where hc = 1160 group by hc,date,soeji) as test 4group by hc,date limit 3;
SQL文のうち、カッコ内のMAXのあるSELECT文は、「前提・実現したいこと」内の1番。
その外のSUMのあるSELECT文が2番を表しています。
###出力結果
+------+------------+----------+
| hc | date | SUM(num) |
+------+------------+----------+
| 1160 | 2014-01-01 | 15 |
| 1160 | 2014-01-02 | 0 |
| 1160 | 2014-01-03 | 0 |
+------+------------+----------+
現状、NULLを除いた出力結果が出ます。
説明が難しかったので、もし状況が理解できない場合は質問していただけると助かります。。
###補足情報(言語/FW/ツール等のバージョンなど)
MySQLのバージョンは5.6.25です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/29 13:22 編集
2016/11/29 13:30
2016/11/29 13:40