
在项目开发中遇到了需要分组去查询每组第一或者第几的问题,需要用到Partition By的方式,在此记录下相关资料。
Parttion by 关键字是Oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的结果。
场景:查询出每个部门工资最低的员工编号(每个部门可能有两个最低的工资员工)
表students
sid sname
1 aa
2 bb
3 cc
4 aa
如何写查询语句
去掉sname中重复的
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) >1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有 rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) >1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
重复是指你所查询的所有列值都一样,那你可以很容易地使用 DISTINCT 关键字去排重。
看了你的,猜测你的意思是想把部份重复的列只显示一次。
如果那样的话,你需要分组和归类。一般用在生成报表的时候。
但是从你的问题中也不知道你想得到什么样的格式和数据,所以,暂时帮不了你。
建议你去看一下 Rollup 和 CUBE 的使用。也许看完你自己就知道怎么做了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)