同一查询中的多个计数

Posted

技术标签:

【中文标题】同一查询中的多个计数【英文标题】:MULTIPLE COUNTS IN THE SAME QUERY 【发布时间】:2020-06-04 08:55:35 【问题描述】:

我有这张表,我想统计一下同类型的订单数量,以及所有订单的数量,如下

ord_id type  
1      A
2      B
3      A
4      C

结果如下:

TYPE COUNT  TOTAL
A    2      4
B    1      4
C    1      4

其中 count 列是基于类型的订单计数,total 是订单总数。

这是我的代码:

SELECT type, COUNT(*)
FROM  
  table
where type = 'A'

Union

SELECT type, COUNT(*)
FROM  
  table
where type = 'b';

【问题讨论】:

跳过 UNION,做一个 GROUP BY! 【参考方案1】:

使用聚合和窗口函数:

select 
    type,
    count(*) cnt,
    sum(count(*)) over() total
from mytable
group by type

【讨论】:

以上是关于同一查询中的多个计数的主要内容,如果未能解决你的问题,请参考以下文章

同一查询中的火花计数和过滤计数

同一个 SQL 语句中的多个条件计数 [重复]

从同一个表mysql存储过程中选择具有不同条件的多个计数

SQLAlchemy:一个查询中的多个计数

如何使用单个查询获取存储在不同变量中的多个表行的计数?

单个 SQL 查询中的多个计数