sql - SQLite:检索具有相似值的行
问题描述
给出下表:
+------------+----------+
| id | value |
+------------+----------+
| 1 | 10 |
| 1 | 20 |
| 1 | 30 |
| 2 | 10 |
| 2 | 30 |
| 2 | 40 |
| 3 | 10 |
| 3 | 20 |
| 3 | 30 |
| 3 | 40 |
+------------+---------+
我想找到所有共享至少 3 个相似值的 id 以及这些值的平均值(id1、id2、avg(value))
因此该语句应返回:
1,3,20
2,3,26.6
谁能给我一个关于我需要哪个命令的提示(使用 SQLite)?
提前致谢
解决方案
您需要自行加入值而不是相等的 ID。然后按这对 ID 分组。用于avg(value)
获取平均值并count(DISTINCT value)
在HAVING
子句中检查三个共享值的最小值。
SELECT t1.id,
t2.id,
avg(value)
FROM elbat t1
INNER JOIN elbat t2
ON t2.id <> t1.id
AND t2.value = t1.value
GROUP BY t1.id,
t2.id
HAVING count(DISTINCT value) >= 3;
或者删除DISTINCT
,如果它也是一个匹配项,当三个值共享但其中至少两个相同时。如果您不希望这对 ID 重复(以相反的顺序),请更改<>
为<
or >
。
推荐阅读
- python - tensorflow 对象检测 api 训练给出了空的检查点
- java - IMap 读取邮件内容
- google-apps-script - Google 表格 - 文本的像素宽度
- java - 等效于以下 mule JMS 连接器配置的 Java JMS 代码?
- c - 保存多个文件中使用的多个常量值
- php - 如何在 codeigniter 应用程序文件夹中使用响应式文件管理器
- c++ - 初始化静态映射 C++
- angular - 在 Angular 8 中设置动态 PWA 基础路由
- php - 试图从 php 中的非对象响应中获取值
- javascript - 从在 JavaScript 中获得相似和新键的多个对象创建单个对象