sql - 汇总案例
问题描述
是否有可能为我需要为客户的不同标志获取计数和销售额的案例语句提供 2 个聚合函数
基本查询:
Select count(distinct invoices), sum(tot_sal_amt) from stores
试:
Select date,case count(invoices)
when (sum(case when custom_flag='guest' then tot_sal_amt end)then count(invoices) end
when (sum(case when custom_flag='non-guest' then tot_sal_amt end)then count(invoices) end
when (sum(case when custom_flag is null then tot_sal_amt end)then count(invoices) end
from stores
任何帮助表示赞赏。
谢谢
解决方案
我很确定你想要条件聚合:
Select date,
count(distinct invoiceid) as num_invoices,
count(distinct case when custom_flag = 'guest' then invoiceid end) as guest_invoices,
count(distinct case when custom_flag = 'non-guest' then invoiceid end) as nonguest_invoices,
count(distinct case when custom_flag is null then invoiceid end) as null_invoices,
sum(total_sal_amt) as total_sales,
sum(case when custom_flag = 'guest' then total_sal_amt end) as guest_total_sal_amt,
sum(case when custom_flag = 'non-guest' then total_sal_amt end) as nonguest_total_sal_amt,
sum(case when custom_flag is null then total_sal_amt end) as null_total_sal_amt
from stores
group by date;
或者更简单地说:
Select date, custom_flag,
count(distinct invoiceid) as num_invoices,
sum(total_sal_amt) as total_sales,
from stores
group by date, custom_flag;
推荐阅读
- bash - 我正在使用 Pandoc 将 Markdown 转换为 .docx - 如何从生成的文件名中删除 .md?
- php - PHP通过引用传递类中相同对象的函数
- jestjs - Jest 过时快照警告导致测试失败:退出 Jest 时忽略警告
- angular - 在执行流的其余部分之前,如何强制流等待 interval() 运算符完成?
- jquery - 当我在手机浏览器中查看我的页面时,JavaScript 不起作用
- r - 如何处理具有许多 0 的时间序列数据?
- javascript - 当我单击选择时,useEffect() 使我的应用程序挂起
- azure - ARM模板:从不同的文件中获取参数
- scala - Scala 字符串到日期的转换
- file-upload - Hapi Js文件上传苦苦挣扎