sql 分组取每组的前n条或每组的n%(百分之n)的数据
2023-09-11 14:14:09 时间
sql 分组取每组的前n条或每组的n%(百分之n)的数据
sql keyword:
SELECT * ,ROW_NUMBER() OVER(partition by b.UserID order by b.UserID ) rn from b
运行结果:按UserID分组查询出每组条数,rn从1递增
UserID | rn
1 1
1 2
1 3
2 1
2 2
按要求我们要查询分组后每一个user 5%的数据
1.用户分组计算5%数量
with temp as
(
--当数量<1的时候就取一条,且四舍五入取整
SELECT b.UserID,cast(ROUND(CASE WHEN COUNT(1)*0.05<1 THEN 1 ELSE COUNT(1)*0.05 END,0) AS INT) SelCnt from b
)
2.关联暂时表取数
SELECT * ,ROW_NUMBER() OVER(partition by b.UserID order by b.UserID ) rn from b
inner join temp on b.UserID=temp.UserID
where b.rn<=temp.SelCnt
相关文章
- Oracle必会的基础SQL-管理维护
- 【SQL 学习】层次化查询之CONNECT BY 和 START WITH
- sql server递归查询
- sql 循环插入某一条数据
- SQL 已有数据的表创建标识列
- ms sql 生成日历储存过程
- sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
- sql数据库为null时候ASP语句判断问题
- 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核
- Spark修炼之道(进阶篇)——Spark入门到精通:第十三节 Spark Streaming—— Spark SQL、DataFrame与Spark Streaming
- 读书笔记--SQL必知必会02--检索数据
- 监视EF生成SQL的方法(log , SqlServerProfile)
- 【工具收藏】golang 开发工具包,json、sql 转 struct
- 查询出某字段值不为空的记录的SQL语句怎么写
- Sql Server 存储过程实例讲解
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- SQL知多少?利用group by配合case when来对数据做区间汇总
- 【ClickHouse SQL 极简教程】ClickHouse SQL 之数据控制语言 DCL
- sql server 批量备份数据库及删除N天前的备份数据
- 使用awrextr.sql导出awr原始数据
- SQL常识
- 【SQL开发实战技巧】系列(三十六):数仓报表场景☞整理垃圾数据:查找数据的连续性时间和重叠时间的关系,初始化开始结束时间
- 【SQL开发实战技巧】系列(十二):三问(如何对字符串字母去重后按字母顺序排列字符串?如何识别哪些字符串中包含数字?如何将分隔数据转换为多值IN列表?)
- SQL注入 Access数据库
- Stellar Repair for MS SQL 10.0
- SQL Sever — 建表语句,设置种子数量与增量以及设置主键 代码
- shell动态生成.sql文件的方法