【发布时间】:2022-12-13 17:55:34
【问题描述】:
我是 SQL 的新手,我一直在尝试查询一个表,在该表中我需要多个具有特定条件的 COUNT(),它们是:
- 名称列中的唯一名称
- 基于日期
- 基于组
这是表格的示例:
+-------+-------+------------+
| Group | Name | Dates |
+-------+-------+------------+
| GR1 | Name1 | 2022-01-01 |
+-------+-------+------------+
| GR1 | Name1 | 2022-01-01 |
+-------+-------+------------+
| GR1 | Name2 | 2022-02-01 |
+-------+-------+------------+
| GR1 | Name3 | 2022-02-01 |
+-------+-------+------------+
| GR2 | Name4 | 2022-01-01 |
+-------+-------+------------+
| GR2 | Name5 | 2022-03-01 |
+-------+-------+------------+
| GR2 | Name5 | 2022-03-01 |
+-------+-------+------------+
| GR2 | Name6 | 2022-04-01 |
+-------+-------+------------+
| GR2 | Name7 | 2022-04-01 |
+-------+-------+------------+
这是我根据示例尝试实现的目标:
+------------+-----+-----+
| Month | GR1 | GR2 |
+------------+-----+-----+
| 2022-01-01 | 1 | 1 |
+------------+-----+-----+
| 2022-02-01 | 2 | 0 |
+------------+-----+-----+
| 2022-03-01 | 0 | 1 |
+------------+-----+-----+
| 2022-04-01 | 0 | 2 |
+------------+-----+-----+
这是我到目前为止的查询:
SELECT DISTINCT Dates AS Month,
(SELECT COUNT(DISTINCT Name) FROM `table` WHERE Group LIKE '%GR1%') AS GR1,
(SELECT COUNT(DISTINCT Name) FROM `table` WHERE Group LIKE '%GR2%') AS GR2
FROM `table`
ORDER BY Month
我得到了我期望的结果,我得到了不同名称的数量,但没有通过日期过滤。
结果:
+------------+-----+-----+
| DATE | GR1 | GR2 |
+------------+-----+-----+
| 2022-01-01 | 3 | 4 |
+------------+-----+-----+
| 2022-02-01 | 3 | 4 |
+------------+-----+-----+
| 2022-03-01 | 3 | 4 |
+------------+-----+-----+
| 2022-04-01 | 3 | 4 |
+------------+-----+-----+
我一直在努力为日期创造条件,同时为团体保持条件
提前感谢您提供的任何提示或答案! 祝你有美好的一天!
【问题讨论】:
标签: sql