SQL выберите специфику c столбец, который присутствует во всем диапазоне дат - PullRequest
4 голосов
/ 15 марта 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, если диапазон дат запроса с 2020-03-01 по 2020-03-03 должен быть

a
b
c

Я мог бы сделать это в сценарии python, извлекая все строки и используя набор. Можно ли написать SQL запрос для достижения того же результата?

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Вы можете агрегировать по column значению и затем утверждать счетчик отдельных дат:

SELECT col
FROM yourTable
WHERE date BETWEEN '2020-03-01' AND '2020-03-04'
GROUP BY col
HAVING COUNT(DISTINCT date) = 4;
0 голосов
/ 16 марта 2020

Еще один способ решить вышеуказанную проблему.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...