[英]SQL select specific column which are present for all date range
我应该如何编写 SQL 查询来查找所有日期范围内存在的列的所有唯一值。
+-------------+--------+------------+
| primary_key | column | date |
+-------------+--------+------------+
| 1 | a | 2020-03-01 |
| 2 | a | 2020-03-02 |
| 3 | a | 2020-03-03 |
| 4 | a | 2020-03-04 |
| 5 | b | 2020-03-01 |
| 6 | b | 2020-03-02 |
| 7 | b | 2020-03-03 |
| 8 | b | 2020-03-04 |
| 9 | c | 2020-03-01 |
| 10 | c | 2020-03-02 |
| 11 | c | 2020-03-03 |
| 12 | d | 2020-03-04 |
+-------------+--------+------------+
在上面的例子中,如果查询日期范围是 2020-03-01 到 2020-03-04 输出应该是
a
b
因为如果查询日期范围是 2020-03-01 到 2020-03-03 输出应该是
a
b
c
我可以通过获取所有行并使用集合在 python 脚本中执行此操作。 是否可以编写一个 SQL 查询来达到相同的结果?
您可以按column
值聚合,然后断言不同的日期计数:
SELECT col
FROM yourTable
WHERE date BETWEEN '2020-03-01' AND '2020-03-04'
GROUP BY col
HAVING COUNT(DISTINCT date) = 4;
解决上述问题的另一种方法。
select data from (
select data,count(data) as datacnt from unique_value group by data ) a,
(select count(distinct present_date ) as cnt from unique_value) b
where a.datacnt=b.cnt;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.