Python SQL选择所有日期范围中存在的特定列

Python SQL选择所有日期范围中存在的特定列,python,mysql,sql,sql-server,oracle,Python,Mysql,Sql,Sql Server,Oracle,如何编写SQL查询以查找所有日期范围中存在的列的所有唯一值 +-------------+--------+------------+ | primary_key | column | date | +-------------+--------+------------+ | 1 | a | 2020-03-01 | | 2 | a | 2020-03-02 | | 3 | a | 2020-

如何编写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
a
b
c
因为该范围内仅存在a和b 同样,如果查询日期范围为2020-03-01至2020-03-03,则输出应为

a
b
a
b
c
我可以在python脚本中通过获取所有行并使用集合来实现这一点。
是否可以编写SQL查询以获得相同的结果?

您可以按
值进行聚合,然后断言不同的日期计数:

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;