各位僵尸粉好久不见 最近学的东西有点多,有点杂,正好碰到一个业务问题,复习一下前面学的内容:
工作中遇到了一个具体的问题,当时在用SQL进行处理,将处理过程记录下来方便后续学习。感谢群里的小伙伴热心帮助,回答问题。
具体的问题如下:
我需要计算城乡各自的终端数,以及城乡终端数占总数的比重。
数据表如下:
市场类型 |
---|
城镇 |
城镇 |
城镇 |
城镇 |
乡村 |
城镇 |
城镇 |
城镇 |
乡村 |
写法1:直接使用窗口函数
select 市场类型,count(*) as number,round(count(*)/sum(count(*)) over(),2) percent
from 工作
group by 市场类型复制
这个地方最关键的是对窗口函数的理解:
sum(count(*)) over()
复制
表示对总体进行求和,不需要分组和排序
一般常用的窗口函数为:
<窗口函数> over ([partition by <列清单> ]
order by <排序用列清单>)复制
写法2:使用子查询
select 市场类型,num,num/sum(num) over() as rate
from(
select 市场类型,count(1) as num
from 工作
group by 市场类型
) t;复制
输出结果为:
市场类型 num rate
城镇 1201 0.7153
乡村 478 0.2847复制
该方法最简单的地方就是先写出子查询的内容,
select 市场类型,count(1) as num
from 工作
group by 市场类型复制
输出结果为:
市场类型 num
城镇 1201
乡村 478复制
所以窗口函数中
sum(num) over() as rate
复制
表示对子查询的数进行求和计算。
(完)
文章转载自牛谈琴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1665次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
819次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
578次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
489次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
465次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
445次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
374次阅读
2025-04-07 09:44:54
天津市政府数据库框采结果公布!
通讯员
348次阅读
2025-04-10 12:32:35
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
327次阅读
2025-04-18 10:01:22
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
325次阅读
2025-04-17 17:02:24