sql-server - 首先按重复最多的记录排序
问题描述
create table tbl_dup
(
name varchar(100)
);
insert into tbl_dup values('Arsel Rous'),('Oram Rock'),('Oram Rock'),('Brown Twor'),
('John Mak'),('Mak Dee'),('Smith Will'),('Mak Dee'),
('John Mak'),('Oram Rock'),('John Mak'),('Oram Rock');
查询:我正在寻找命令重复记录应显示在结果集中的第一级。
select *
from
(
select name,row_number() over(partition by name order by name) rn
from tbl_dup
) a
order by name,rn;
得到:
name rn
--------------
Arsel Rous 1
Brown Twor 1
John Mak 1
John Mak 2
John Mak 3
Mak Dee 1
Mak Dee 2
Oram Rock 1
Oram Rock 2
Oram Rock 3
Oram Rock 4
Smith Will 1
预期结果:
name rn
---------------
Oram Rock 1
Oram Rock 2
Oram Rock 3
Oram Rock 4
John Mak 1
John Mak 2
John Mak 3
Mak Dee 1
Mak Dee 2
Arsel Rous 1
Brown Twor 1
解决方案
尝试在子句COUNT
中用作分析函数:ORDER BY
SELECT name, ROW_NUMBER() OVER (PARTITION by name ORDER BY name) rn
FROM tbl_dup
ORDER BY COUNT(*) OVER (PARTITION BY name) DESC, rn;
演示
推荐阅读
- spring-boot - Spring boot 2 微服务 - 将主体传播到服务
- reactjs - 使用 create-react-app 时如何更新预先存在的依赖项?
- r - 根据第三列中的行计算两列中日期之间的平均天数
- r - ggplot 中的边框功能没有按预期工作?
- php - 如何仅显示从数据库中获取的这些数据的名称?
- json - 詹金斯没有开始或重新上线 - 挂起并显示严重:无法解析提供的 JSON - [/var/lib/jenkins/cb-envelope/envelope.json]
- apache-spark - org.apache.spark.SparkException:通过spark将数据写入Hbase时写入行时任务失败
- php - 我下载的文件将其名称更改为“下载”,尽管我在标题中更改了它
- keyboard - 使用 python 访问应用程序
- javascript - javascript 错误:为什么我无法将标签从“li”克隆/复制到“table”?