求教大佬,这种统计 sql 如何写?

2018-09-29 17:53:53 +08:00
 hisune
金额|账号数量
---|---
2000~4999|
5000~9999|

就是从订单的流水数据中统计每个充值区间段的用户 id 数量有多少,假定数据库表结构是这样的:
money
uid
1384 次点击
所在节点    问与答
6 条回复
liprais
2018-09-29 17:56:03 +08:00
充值金额改成区间不就行了

case when money > 2000 and money <= 4999 then 'a'
when your-condition-here then 'b'
else
end
这样
然后 group by count(*) 就行了
hisune
2018-09-29 17:58:22 +08:00
@liprais 你这个是订单金额是某个区间的数量吧?其实我要的是用户累计订单金额落在区间的用户数量
GTim
2018-09-29 17:59:50 +08:00
每个段的大小不一样?
liprais
2018-09-29 18:00:37 +08:00
@hisune 大概意思就这样的,你自己改改就行了,其实不就是把连续量改成离散量呗
hisune
2018-09-29 18:11:16 +08:00
@liprais
```
select elt(interval(a, 0, 100, 500), 'less100', '0to100', '100to500' 'more500') l, count(uid)
from
(select sum(money) as a,uid from orders group by uid) t
group by l
```
就是实现这种效果,我只能想到用这种方式
hisune
2018-09-29 18:11:26 +08:00
@GTim 是的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/493929

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX