sql - 选择仅在其中 3 个中具有不同的多个列
问题描述
我有一个表,我需要返回大约 14 个列值,但只为某些列上的重复项返回 1 行。
第二个问题是,在重复项之间,我需要在不需要唯一的列之一中保留具有最大 int 的那个。
由于表格有点大,我正在寻求以最有效的方式执行此操作的建议。
我应该做一个小组吗?
我的表有点像这样,我会简化列数。
ID(UniqueIdentifier) | ACCID(UniqueIdentifier) | DateTime(DateTime) | distance(int)|type(int)
28761188-0886-E911-822F-DD1FA635D450 1238FD8A-BD00-411A-A81C-0F6F5C026BCC 2019-06-03 14:04:41.000 2 3
41761188-0886-E911-822F-DD1FA635D450 1238FD8A-BD00-411A-A81C-0F6F5C026BCC 2019-06-03 14:04:41.000 1 3
我应该只选择 ACCID 和 DATETIME 是唯一的,主中的列 ID 所以永远不会重复,我需要保持距离最大的行。
解决方案
您可以使用ROW_NUMBER()
窗口函数,如下所示:
select *
from (
select
id,
accid,
datetime,
distance,
type,
row_number() over(partition by accid, datetime order by type desc) as rn
from t
) x
where rn = 1
如果要显示多个“关系”,则替换ROW_NUMBER()
为RANK()
.
推荐阅读
- azure-data-lake - Azure Data Lake Store .NET SDK 可以读写二进制文件吗?
- java - Spring JPA 投影 findAll
- django - 迁移后 django 管理站点中不存在关系
- android - 尝试写入在线文本文件时获取响应代码 404
- python - 稀疏性降低
- mysql - 排名排行榜 - MySQL
- google-analytics - 取消嵌套自定义维度会复制/夸大 BigQuery 中的交易收入
- javascript - 使用 JS/JQuery 和下拉框更改 CSS 字体
- r - 使用 plot_ly() 将 ggplot2 热图转换为相对的 plotly 热图
- jquery - Laravel 5.6 Ajax Jquery 模态插入数据库不起作用