【问题标题】:Group by to include case statement inside SQL statement分组以在 SQL 语句中包含 case 语句
【发布时间】:2020-03-20 17:20:53
【问题描述】:

我有一个表格,其中存储来自卖家的购买信息,表格包含对每次购买的评分(满分 5 星)。我想要输出 Group By Sellers 和 Each Sellers good (Above 3) and bad (Below 4) 评分计数

PurchaseId  SellerId    PurchaseRating
1            ABC         2
2            ABC         5
3            DEF         1
4            XYZ         2
5            DEF         4
7            ABC         3

OUTPUT 
SellerId     TotalOrders   AvgRating    Above3*(4&5)  Below4*(1 to 3)
ABC           3             3.3        1              2
DEF           2             2.5        1              1
XYZ           1              2         0              1

对于前 3 列,我使用这个得到结果

Select SellerId, Count(P.Id) TotalOrders, Avg(PurchaseRating) AvgRating, 
CASE WHEN P.PurchaseRating >= 4 THEN 1 ELSE 0 END AS Above3*(4&5)
 from 
  [dbo].[AmazonAbeOrdersPurchaseInfo] P 
   Where PurchaseRating is not null
  Group by P.SellerId
  order by TotalOrders desc

无法确定如何在 group by 子句中包含大小写。

【问题讨论】:

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


    【解决方案1】:

    您正在尝试进行条件聚合。重要的是您希望条件表达式聚合函数中:

    select 
        sellerId,
        count(*) totalOrders,
        avg(purchaseRating) avgRating,
        sum(case when purchaseRating > 3 then 1 else 0 end) above3,
        sum(case when purchaseRating < 4 then 1 else 0 end) below4
    from [dbo].[AmazonAbeOrdersPurchaseInfo]
    where purchaseRating is not null
    group by sellerId
    order by totalOrders desc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多