在MYSQL查询中识别离散记录集之间的重复行

时间:2019-05-29 09:59:29

标签: mysql

我确定这已经在其他地方得到了解答,但是我一直在努力寻找正确的术语……

以下是我定期收集的一些数据(恰好是Facebook受众人数)。

每个测试都是一个target,并且有两个batches,分别是18和19(但是整个数据集中会有更多)。

+--------+-------+----------+-------+---------------------+
| target | batch | location | daily | created_at          |
+--------+-------+----------+-------+---------------------+
|  53003 |    18 | Austria  | 12117 | 2019-05-27 10:55:48 |
|  53003 |    19 | Austria  | 12663 | 2019-05-29 01:18:25 |
|  53004 |    18 | Austria  |  4999 | 2019-05-27 10:55:49 |
|  53004 |    19 | Austria  |  4999 | 2019-05-29 01:18:26 |
|  53005 |    18 | Austria  |   999 | 2019-05-27 10:55:50 |
|  53005 |    19 | Austria  |   997 | 2019-05-28 22:19:25 |
+--------+-------+----------+-------+---------------------+

我想按天数过滤,其中同一batch的{​​{1}} 18和19具有相同的target值。

所以我会得到类似以下的信息(因为目标53004是唯一两天结果相同的目标)。

注意:重要的是我希望首先比较每个目标,所以,如果另一个目标两个批次的日均= 4999,它将分别计算,并且如果两个目标碰巧都具有日均= 123,但每批次仅一次,它们也不会算作匹配项。

daily

n / a 只是表示这些列将不再是单个值,我不在乎它们。)

1 个答案:

答案 0 :(得分:3)

您可以聚合并检查HAVING子句中的最小值和最大值相等。

SELECT target,
       'n/a' batch,
       location,
       max(daily) daily,
       'n/a' created_at
       FROM elbat
       GROUP BY target,
                location
       HAVING min(daily) = max(daily);