分组后取前 N 条

当MySQL不支持窗口函数时,选取每个category_id下的前四行数据变得复杂。该博客讨论了一种解决方案,通过集算器SPL脚本来实现这一目标。SPL提供了简单的分组和选择前N行的功能,使得即使在不支持窗口函数的数据库中也能完成类似操作。这种方法对于处理分组数据并返回特定数量行的情况非常有用。
摘要由CSDN通过智能技术生成

【问题】

suppose i have one table say ‘abc’ and it has got two column product_id and category_id.There can be more than one product_id for one category_id. Now what i need is how can we select first four rows from all the available category_id in a that table…i was able to do this in mysql server database using "row_number over partition by (….." but unfortunately this not supported in mysql…Can any one help me out,how to write this query.

【回答】

正如你所说,各组前 N 列的问题应该用窗口函数来解决,但 MySQL 没有窗口函数,解决起来要麻烦许多。如果数据量不是太大时,可以试试 SPL 了,做这种麻烦上很简单,代码如下:

A
1=db.query(“select * from abc”)
2=A1.group(category_id)
3=A2.(~.top(4))
4=A3.union()

A1:SQL 取出表中数据

A2:按 category_id 分组
A3:在每组中取前四条
A4:将各组数据合并

集算器可以通过 JDBC 与 JAVA 集成,就和使用数据为差不多,详细可参考

【Java 如何调用 SPL 脚本】

集算器简化 SQL 式计算之各组前 N 行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值