Как выбрать только там, где все интервалы имеют значения? - PullRequest
1 голос
/ 17 мая 2019

Я хотел бы выбрать из таблицы, где все 15-минутные интервалы имеют значение для каждого канала, иначе не выбирайте этот интервал.Таблица:

enter image description here

Результаты должны быть такими:

enter image description here

Таким интервалом201905151300 не следует включать, так как нет значения канала 2.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Попробуйте это-

SELECT * FROM your_table
WHERE DateTime IN
(
    SELECT DateTime
    FROM your_table
    GROUP BY DateTime
    HAVING COUNT(DISTINCT Chanel) = 4
)
0 голосов
/ 17 мая 2019

Кажется, вы каждый раз ищете четыре записи. Вы можете использовать оконные функции:

select t.*
from (select t.*,
             count(*) over (partition by id, datetime) as cnt
      from t
     ) t
where cnt = 4;

Если вы не знаете количество каналов, вы можете использовать:

select t.*
from (select t.*,
             count(*) over (partition by id, datetime) as cnt,
             count(distinct channel) over () as num_channel
      from t
     ) t
where cnt = num_channel;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...