GROUP BY
ステートメントに問題があります。
私はテーブルテストを持っています:
そして、次のselectステートメントを実行したいと思います。
select sum(a)
from TEST
group by a+b
結果は次のとおりです。
SUM(A)
3
1
3
動作しますが、理由はわかりません。a + bはGROUP BY
ステートメントでどのような表現をしますか?
ありがとう。
//編集、その巨大な画像でごめんなさい。変更します
これを試してください... SELECT 2 + NULL
そしてあなたが何を得るかを見てください。
答えはそうではありません2
、それはNULL
です。
したがって、サンプルデータを使用して...
A | B | A+B
-----+-----+-----
1 | 0 | 1
2 | NULL| NULL
3 | 2 | 5
1 | NULL| NULL
NULL| 2 | NULL
whereisisの合計... A
whereisisA+B
の
合計...... whereisisの
合計......NULL
3
A
A+B
1
1
A
A+B
5
3
あなたはこれを使用して回避することができますCOALESCE(a, 0) + COALESCE(b, 0)
あなたがそれが何であるかを知りたいのなら、あなたはそれにselect式itslefを与えることができます
select a+b,sum(a) from TEST group by a+b
任意の値とnullを加算している間はnullです。
これは理解に役立つはずです。
select a,a+b from test11;
+------+------+------+
| a | b | a+b |
+------+------+------+
| 1 | 2 | 3 |
| 2 | 2 | 4 |
| 2 | 3 | 5 |
| 4 | 3 | 7 |
| 3 | 4 | 7 |
| 0 | 7 | 7 |
+------+------+------+
DBは、(a + b)を含む列を追加して一時テーブルを作成し、その列でgroupbyを実行します。