sql - 多列计数和聚合
问题描述
我有下表,其中有多个订单条目,订单可以被拒绝或批准。
Amount | Approved | Rejected | OrderNo
-------------------------------------------
10 | N | Y | 10
20 | Y | N | 10
30 | N | N | 10
40 | Y | N | 10
22 | N | Y | 11
10 | N | N | 10
--------------------------------------------
想建立一个可以总结的结果集。
OrderNo | TotalEntries | Approved_Or_Rejected_Entries | TotalAmount
-----------------------------------------------------------------
10 | 5 | 3 | 110
11 | 1 | 1 | 22
解决方案
使用条件聚合:
select
orderno,
count(*) totalentries
sum(case when 'Y' in (approved, rejected) then 1 else 0 end) approved_or_rejected
sum(amount) total_amount
from mytable
group by orderno
推荐阅读
- regex - 正则表达式突出显示长于 n 个单词的句子
- reactjs - 未定义的 pns_confirmRegex
- ocaml - 输入两个列表,内容相互匹配
- c# - 'VFPOLEDB' 提供程序未在本地计算机上注册异常仍然存在
- node.js - 意外的 Node.js 程序流程
- ruby-on-rails - 如何在 Rails 中动态更改会话 cookie 名称?
- java - 如何从命令行运行 Java Gradle 项目中的 main 方法?
- c# - 如何对列表进行排序
通过具有可选属性顺序的对象中的属性 - python - 在seaborn中并排绘制两列的箱形图
- ruby-on-rails - 您的版本是 2.3.4,但您的 Gemfile 指定了 2.4.1