SQL Запрос на возврат количества записей для уникальной комбинации двух столбцов - PullRequest
1 голос
/ 07 мая 2020

Я хочу подсчитать, сколько маршрутов имеет каждый код в неделю. Это означало бы, что я хочу узнать, сколько существует маршрутов для каждой комбинации кода и year_of_week. У меня есть следующий набор данных:

Data:
Code    Year_and_Week   Route
1       201501          A
1       201501          B
1       201523          C
1       201633          A
1       201633          A           
1       201643          A
1       201643          B
1       201643          C
1       201643          D
2       201503          A
2       201503          C
2       201520          A
2       201624          B           
2       201624          B
3       201643          A
3       201643          C
3       201643          D

У меня есть фрагмент кода, который позволяет получить желаемый результат, но только тогда, когда я ввожу в код строку «Where code = #». Я хочу, чтобы результаты выводились для каждого типа кода.

Select Year_and_Week, Count(Route)
From Deliveries
Where Code=1
Group BY Year_and_Week

Желаемый результат:

Code    Year_and_Week   Route_Count
1       201501          2
1       201523          1
1       201633          2           
1       201643          4
2       201503          2
2       201520          1
2       201624          2
3       201643          3

Я пытаюсь получить этот вывод, чтобы затем я мог взять максимум и минимум Route_Count для каждого кода в целях анализа с использованием CTE, например ...

With Route_Number_CTE (Year_and_Week, Route_Count) As(
Select Year_And_Week, Count(Route)
From Deliveries
Where Code=1
Group BY Year_and_Week
)

select min(Route_Count),max(Route_Count)
From Route_Number_CTE;

1 Ответ

1 голос
/ 07 мая 2020

Просто добавьте code к предложениям select и group by:

select code, year_and_week, count(route) no_routes
from deliveries
group by code, year_and_week

Обратите внимание, что count(route) учитывает только не- null значения route. Если этот столбец не допускает значения NULL (или если вы хотите учитывать null значений), это проще и эффективнее записать:

select code, year_and_week, count(*) no_routes
from deliveries
group by code, year_and_week
...