Как мне найти наиболее частое средство в SQL - PullRequest
0 голосов
/ 12 января 2019

В настоящее время мой стол состоит из двух - Таблица средств обслуживания Таблица возможностей и Таблица бронирования Таблица бронирования

Как мне перечислить наиболее используемые популярные средства, используемые участниками в 2017 году?

  1. Год должен быть 2017

  2. Наиболее частое учреждение, используемое каждый месяц

После попытки сделать

Это то, что у меня сейчас

SELECT 
    MONTH(b.BookingStartDateTime) AS 'Month', 
    f.FacilityDesc AS 'MOST FREQUENT'
FROM
    Booking b
INNER JOIN 
    Facility f ON b.FacilityID = f.FacilityID
WHERE
    YEAR(b.BookingStartDateTime) = 2017
GROUP BY
    MONTH(b.BookingStartDateTime), f.FacilityDesc
ORDER BY 
    MONTH(b.BookingStartDateTime) DESC

1 Ответ

0 голосов
/ 12 января 2019

Я считаю, что это должно работать.

select Month, 'Most Frequent' from (
select *, row_number() over (partition by Month order by Frequency desc) rnk from (

SELECT 
    MONTH(b.BookingStartDateTime) AS 'Month', 
    f.FacilityDesc AS 'MOST FREQUENT',
    count(*) as 'Frequency'
FROM
    Booking b
INNER JOIN 
    Facility f ON b.FacilityID = f.FacilityID
WHERE
    YEAR(b.BookingStartDateTime) = 2017
GROUP BY
    MONTH(b.BookingStartDateTime), f.FacilityDesc
) rnk
) a where rnk = 1
order by month desc

Добавлена ​​неоконная версия функции, вам нужно выполнить внутреннее объединение или где есть метод, чтобы получить ваш результат

with rnk as (
    SELECT 
        MONTH(b.BookingStartDateTime) AS 'Month', 
        f.FacilityDesc AS 'MOST FREQUENT',
        count(*) as 'Frequency'
    FROM
        Booking b
    INNER JOIN 
        Facility f ON b.FacilityID = f.FacilityID
    WHERE
        YEAR(b.BookingStartDateTime) = 2017
    GROUP BY
        MONTH(b.BookingStartDateTime), f.FacilityDesc
)

select Month, 'Most Frequent' from rnk where exists(
    select Month, freq from (
        select Month, max(Frequency) freq from rnk group by Month
    )  a where a.Month = rnk.Month and a.freq = rnk.Frequency
)
order by Month desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...