Показывать результаты SQL только от пользователей с точными тремя записями - PullRequest
1 голос
/ 26 мая 2019
SELECT * 
FROM PlanData 
WHERE GeneralEventCode = 'VM' 
  AND AirlineCode = 'LH' 
  AND DateStart > '2019-05-01' 
  AND UserHomeBaseAirportCode = 'FRA'

В этой таблице у меня также есть поле UserId. Я хотел бы получить только результаты, если UserId имеет 3 точных записи в этой таблице.

Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Вам нужно еще 1 условие в предложении WHERE, чтобы выбрать только UserId s с 3 записями:

SELECT * FROM PlanData 
where 
  GeneralEventCode='VM' 
  and AirlineCode='LH' 
  and DateStart>'2019-05-01' 
  and UserHomeBaseAirportCode='FRA'
  and UserId IN (
    SELECT UserId 
    FROM PlanData 
    GROUP BY UserId 
    HAVING Count(*) = 3
  )
0 голосов
/ 26 мая 2019

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

SELECT pd.*
FROM (SELECT pd.*,
             COUNT(*) OVER (PARTITION BY userid) as cnt
      FROM PlanData pd
      WHERE GeneralEventCode = 'VM' and
            AirlineCode='LH' and
            DateStart > '2019-05-01' and 
            UserHomeBaseAirportCode = 'FRA'
    ) pd
WHERE cnt = 3;

Если вы имеете в виду три строки любого рода, то:

SELECT pd.*
FROM (SELECT pd.*,
             COUNT(*) OVER (PARTITION BY userid) as cnt
      FROM PlanData pd
     ) pd
WHERE GeneralEventCode = 'VM' and
      AirlineCode='LH' and
      DateStart > '2019-05-01' and 
      UserHomeBaseAirportCode = 'FRA' and
      cnt = 3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...