【问题标题】:SQL Query to return count of records for unique combination of two columnsSQL查询返回两列的唯一组合的记录数
【发布时间】:2020-05-06 21:15:02
【问题描述】:

我正在计算每个代码每周有多少条路线。这意味着我想找出代码和 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

我有一个代码 sn-p 可以检索我想要的结果,但只有当我在代码中输入“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

我正在尝试获取此输出,以便我可以使用 CTE 之类的 CTE 为每个代码获取最大和最小 Route_Count 用于分析目的...

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;

【问题讨论】:

    标签: sql sql-server tsql group-by count


    【解决方案1】:

    只需将code 添加到selectgroup by 子句:

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

    请注意,count(route) 仅计算 route 的非null 值。如果此列不可为空(或者如果您想考虑 null 值),则编写起来更简单、更有效:

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

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多