sql - 为另一列中的重复值选择 MAX 值
问题描述
我在为这个问题找到答案时遇到了一些麻烦,所以如果它在其他地方,我深表歉意。
我有一个表'dbo.MileageImport',它具有以下布局,我拉它来查找重复条目:
|KEY | DATA |
---------------------
|V9864653 | 180288 |
|V9864653 | 22189 |
|V9864811 | 11464 |
|V9864811 | 12688 |
我遇到的麻烦是当我在 DB2 环境中运行以下 SQL 时:
SELECT KEY, MIN(DATA)
FROM dbo.MileageImport
GROUP BY KEY
HAVING (COUNT(KEY)>1);
它最终会提取以下数据:
|KEY | DATA |
---------------------
|V9864811 | 11464 |
|V9864653 | 180288 |
出于某种原因,它会拉取 V9864811 的 MIN 值,而不是 V9864653。如果我将其反转并放入 MAX 而不是 MIN,它会拉取相反的值。
我在这里遗漏了什么,所以我可以只为重复的 KEY 记录提取 MIN DATA 值,还是有另一种方法可以做到这一点?来自此数据的报告每月都在变化,因此可能会有不同的键最终被重复,我需要更正。最终,我将其转换为 DELETE 语句,以删除两个(或更多)重复里程条目中的较低者。
解决方案
你的 DATA 列是数字的吗?还是一个VARCHAR?
如果您发现如果可以的话最好将其更改为数字,如果您没有任何分数并且它只是整数,则可能是整数。
如果没有,那么您可以将它们转换为整数值,但是如果有很多事务或者它的表很大,那么它会很慢并且不理想。如果您可以更改数据类型,那么这样做是不好的做法!
SELECT KEY, MIN(CAST(DATA as Int))
FROM dbo.MileageImport
GROUP BY KEY
HAVING (COUNT(KEY)>1)
推荐阅读
- mongodb - 通过 mgo v2 (golang,mongoDB) 更新结构的数组元素
- reactjs - 你如何实现对自定义 React 渲染器的 React Devtools 支持?
- oracle - Oracle DB - 哪些表是 IOT?
- python-3.x - 如何将列表类型的属性添加到每个节点,每个节点都有自己唯一的属性副本
- firebase - 我怎样才能让这些承诺按顺序解决
- azure - 由于绑定错误,Cosmos DB 触发器无法正常工作
- python - 使用 python + selenium + webdriver 从文本文件中搜索 ID 并将 URL 写入文件
- gstreamer - 带有参差不齐的数据链接的 Gstreamer 文件接收器时间戳
- java - 关闭txt文件并删除
- java - 将 csv 数据作为 zipentry 对象移动到 zip 存档 - 构造函数 ZipEntry(Path) 未定义