【SQL杂谈】区间分组统计

很多时候,我们都使用group by 进行分组,count(*)进行统计,两者结合可以进行聚合统计。假设我们有这样一张煤矿数据库表。columns: id(煤矿ID, bigint), prod_status(生产状态,varchar), prod_capacity(产能,decimal)下面围绕这张表,我们探讨一些常见的需求所需要使用到的SQL。
摘要由CSDN通过智能技术生成

简介

很多时候,我们都使用group by 进行分组,count(*)进行统计,两者结合可以进行聚合统计。
假设我们有这样一张煤矿数据库表。

table name: coalmine
columns: id(煤矿ID, bigint), prod_status(生产状态,varchar), prod_capacity(产能,decimal)

下面围绕这张表,我们探讨一些常见的需求所需要使用到的SQL。

需求方案

需求1:统计各生产状态的煤矿数量

学过SQL的人一眼就看出来,这是一个非常基础的问题。我们只需要按照prod_status进行分组进行聚合统计即可。大致可以写如下的sql:

select prod_status as name, count(*) as num from coalmine group by name;

可以得到如下的输出:

name | num
停产	377
停建	360
关闭	31
准备	1
在建	89
正在复产	3
生产	463
生产/在建	15
生产/试运转	12
试运转	1

非常完美,我们得到了我们想要的数据。

但是现在有了新的需求:统计产能在30以下,30~90,90以上的煤矿数量有多少。现在我们遇到了难题,因为产能字段(prod_capacity)是一个数值,同时统计的依据是一个区间,我们不能单纯的将其作为group by的对象进行操作。

select prod_capacity as name, count(*) as num from coalmine group by name;

这样做的结果,只是按数值进行分组统计。
那么,该怎么办呢?

需求2:区间
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值