使用案例报表获取每周总订单,已取消订单和已取消订单的百分比

时间:2019-12-30 18:08:59

标签: sql case

初次张贴,只是在寻找撰写案例陈述的指导。我想从一个表中提取以下内容

每周总订单 每周取消的订单 已取消订单的百分比

我对案例陈述进行了一些阅读,但找不到确切的内容。我认为case语句类似于

“当order ='canceled'然后计数订单的情况下”,但是我也知道这是错误的,因此只是寻求一些帮助。

提前谢谢!

-ET

2 个答案:

答案 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'

这显然可以简化,但是我更愿意将其显式化以便更好地理解。希望对您有所帮助。