Найти количество строк после поднабора данных в SQL Server - PullRequest
0 голосов
/ 05 июля 2019

У меня есть такой набор данных:

ID  COUNTRY MODEL   POINT   CATEGORY    PARTY   DESTINATION
-----------------------------------------------------------
101 USA       a1      90         red       nyc    mum
102 UK        b2      91        green      chi    hkk
103 USA       a1      92       yellow      bos    bkk
104 AUS       b2      93        blue       dfw    tpi
105 China     a1      94       purple      ven    syd
106 USA       c1      95       black       sea    auc
107 UK        a1      96       white       hou    tok
108 UK        a1      97       orange      okl    hmn
109 USA       b2      98       gray        mnn    kll

Я пытаюсь отфильтровать данные только для стран США и Великобритании, а затем добавить столбец для подсчета номера модели рядом с последним столбцом, покане имеет пункта назначения на панели просмотра

Вот как должен выглядеть мой ожидаемый результат

ID  COUNTRY MODEL   POINT   CATEGORY    PARTY   count
-----------------------------------------------------
101 USA      a1      90       red        nyc      3
102 UK       b2      91      green       chi      2
103 USA      a1      92     yellow       bos      3
106 USA      c1      95      black       sea      1
107 UK       a1      96      white       hou      3
108 UK       a1      97      orange      okl      3
109 USA      b2      98      gray        mnn      2

Запрос, который я пробовал, занимал только все столбцы:

SELECT DISTINCT
    MODEL, ID, COUNTRY, POINT, PARTY, CATEGORY, COUNT(*) AS count
FROM
    order
WHERE
    COUNTRY IN ('USA', 'UK')
GROUP BY
    COUNTRY, MODEL, POINT, PARTY, CATEGORY
ORDER BY
    count DESC

1 Ответ

0 голосов
/ 05 июля 2019

Попробуйте запрос ниже. Вы можете COUNT и PARTITION BY столбец, который вы хотите. В вашем ожидаемом результате, не должно ли a1 быть 4?

SELECT 
ID, Country, model, point, Category, party, 
COUNT(id) OVER(PARTITION BY Model ) AS [Count]
FROM order
WHERE Country in ('USA', 'UK')
ORDER BY id
...