たとえば、次の表を見てください ( と呼びましょうBIN_TABLE
):
+------+------+
| A | B |
+------+------+
| 0 | 0 |
| 0 | 1 |
| 1 | 1 |
| 1 | 0 |
+------+------+
ロールアップしたいので、次のようにします。
SELECT A, B, COUNT(*)
FROM BIN_TABLE
GROUP BY A, B WITH ROLLUP;
そして私は得る:
+------+------+----------+
| A | B | COUNT(*) |
+------+------+----------+
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | NULL | 2 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| 1 | NULL | 2 |
| NULL | NULL | 4 |
+------+------+----------+
これは、句WITH ROLLUP
に入れたフィールドの順序を使用する方法の例です。GROUP BY
結果に次の行も含めたいと思います。
| NULL | 1 | 2 |
| NULL | 0 | 2 |
これは、ロールアップされたすべての順列があることを意味します。
これに頼らずにこれを行うことは可能ですか:
SELECT A, B, COUNT(*)
FROM BIN_TABLE
GROUP BY A, B WITH ROLLUP
UNION
SELECT NULL, B, COUNT(*)
FROM BIN_TABLE
GROUP BY B
(問題がある場合は、MySQL 5.6 を使用します)