SQL查询:区间数量统计|关于elt(数组取值)和INTERVAL(区间定位)的用法

本文介绍了如何使用SQL的group by、having、elt和INTERVAL函数来实现对数据的高级统计分析。包括找出发博量大于1000的用户并排序,计算平均发博量,以及利用elt和INTERVAL进行发博区间的人数统计。INTERVAL函数用于区间定位,而elt函数则用于根据给定的下标获取数组值。

基本需求

找到发博量大于1000的用户并排序:group by + having

select count(*) as num,uid from status group by uid 
having(count(*)>1000) order by count(*) desc

在这里插入图片描述

统计平均发博量:group by+子查询

select avg(a.num) from 
(select count(*) as num,uid from status group by uid )as a

在这里插入图片描述

进阶需求

按照发博区间统计人数:elt+INTERVAL

SELECT elt(
INTERVAL(a.num, 0, 5, 10, 50, 100, 500, 1000), 
'<5', '5-10', '10-50', '50-100', '100-500', '500-1000', '>=1000') 
as num, count(uid) as user_num
FROM (select count(*) as num,uid from status group by uid ) as a
GROUP BY elt(
INTERVAL(a.num, 0, 5, 10, 50, 100, 500, 1000), 
'<5', '5-10', '10-50', '50-100', '100-500', '500-1000', '>=1000')
 order by user_num desc  

在这里插入图片描述

INTERVAL:区间定位

INTERVAL(N,N1,N2,N3,…)
INTERVAL()函数用于定位N在后续N1、N2、N3…组成区间的位置,列表值要求满足N1<N2<N3…。返回所在区间下标。
在这里插入图片描述

elt:数组取值

ELT(N,N1,N2,N3,…)
如果N=1则返回N1,如果N=2则返回N2,如果N=3则返回N3
elt+INTERVAL
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值