如何根据总订单价值和邮政组获取报告
Posted
技术标签:
【中文标题】如何根据总订单价值和邮政组获取报告【英文标题】:How to get report based on total order value and postal group 【发布时间】:2017-05-22 10:55:05 【问题描述】:您好,我正在尝试生成报告总客户、总订单、收入和平均订单价值,其中一个表中的订单低于 15 英镑和交付方式(按标准),而另一表中的订单和标准为 15-20 英镑。 下面是我的查询。
[Customer no]
[Order No],
[Amount],
[Shipping Service]
[Shipping Amount]
FROM [Better$Internet Order] io
INNER JOIN [Better$Consignment] IC
ON IC.[Order No]=OH.[Order No]
WHERE [order date] >= '2016-08-01' AND
[order date] <= '2016-08-31' AND [COUNTRY]='UNITED KINGDOM' and oh.
[type] like 'order%' and [Shipping Service]='Standard'
Group by
[Customer no]
[Order No],
[Amount],
[Shipping Service]
[Shipping Amount]
ORDER BY [AMOUNT] ASC
在我的查询中,我给出了“customer no”来获取总客户数和“order no”来获取总订单数,因为一位客户可能在一个月内订购几次。 “订单日期”、“国家/地区”和“类型”是订单,因此它只获得订单,而不是退款或更换。我只想得到并且“运输服务”是标准的。提前感谢您的帮助。
**table data:**
Customer no| order No| Amount | Shipping Service
-------------------------------------------------
1 | 254 | 8 | standard
2 | 258 | 12 | Tracked
1 | 260 | 10 | Standard
3 | 285 | 13 | Tracked
4 | 295 | 11 | Standard
Expected results:
Month Aug 2016
Under 15 | Standard Delivery | Total customer - 2
Total orders - 3
total revenue - £18
AOV - £9
Tracked Delivery | Total customer - 2
Total orders - 2
total revenue - 25
AOV - 12.50
【问题讨论】:
好像您丢失了查询的第一部分。复制和粘贴问题? 添加一些示例表数据和预期的结果 - 以及所有格式化文本。 你好,我刚学sql,没有第一部分。 @jarlh 用表格数据和预期结果更新了问题 似乎需要GROUP BY
,价格等级使用case
表达式。
【参考方案1】:
从内部开始,在派生表中,有一个case
表达式来确定价格等级。 GROUP BY
为每个价格等级/运输类型计算的结果:
select amountclass, "Shipping Service",
count(distinct "Customer no") as "Total customers",
count(*) as "Total orders",
sum("Amount") as "total revenue",
avg("Amount" * 1.0) as "AOV"
from
(
select "Customer no", "order No", "Amount", "Shipping Service"
case when "Amount" < 15 then "Under 15"
else "Over 15"
end as amountclass
from tablename
) dt
group by amountclass, "Shipping Service"
order by amountclass, "Shipping Service"
使用双引号(例如,"Shipping Service"
用于分隔标识符是 ANSI SQL。(一些 dbms 产品也有方括号作为替代。)
【讨论】:
以上是关于如何根据总订单价值和邮政组获取报告的主要内容,如果未能解决你的问题,请参考以下文章
SQL如何计算订单购买之间的平均时间? (根据下一行和上一行进行sql计算)