初次张贴,只是在寻找撰写案例陈述的指导。我想从一个表中提取以下内容
每周总订单 每周取消的订单 已取消订单的百分比
我对案例陈述进行了一些阅读,但找不到确切的内容。我认为case语句类似于
“当order ='canceled'然后计数订单的情况下”,但是我也知道这是错误的,因此只是寻求一些帮助。
提前谢谢!
-ET
答案 0 :(得分:0)
计算部分行的通常方法是使用where子句进行count
查询,以选择哪些行。这些中的每一个都可以与其他类似的查询进行外部联接。
使用case
进行一次选择的方法是将case
放在sum
内:
SELECT SUM(case when order = 'cancelled' THEN 1 ELSE 0 END) AS cancelled, ...
答案 1 :(得分:0)
您可能应该为此构建一个嵌套查询: 首先,构建查询以按周对事物进行排序。
SELECT orderID, orderStatus, DATEPART(week, orderDate) as orderWeek
FROM orders
然后您可能会从中选择以下内容:
SELECT count(orderID) OVER(PARTITION BY orderWeek) AS Total
,count(orderID) OVER(PARTITION BY orderWeek, orderStatus) AS CountPerStatus
,orderWeek
FROM (SELECT orderID, orderStatus, DATEPART(week, orderDate) as orderWeek
FROM orders) a
添加,然后将总计总计为一行:
SELECT Total, CountPerStatus, orderWeek
FROM (
SELECT count(orderID) OVER(PARTITION BY orderWeek) AS Total
,count(orderID) OVER(PARTITION BY orderWeek, orderStatus) AS CountPerStatus
,orderWeek
FROM (
SELECT orderID, orderStatus, DATEPART(week, orderDate) as orderWeek
FROM orders
) a
) b
WHERE CountPerStatus = 'Cancelled'
这显然可以简化,但是我更愿意将其显式化以便更好地理解。希望对您有所帮助。