根据日期列查找唯一项

时间:2018-08-03 02:55:35

标签: mysql

我需要根据日期列查找唯一的项目。我试图将数据分组在一起,但是没有得到期望的结果。
在下面的示例中,我需要找到一个新条目,即7月27日出现的“新公司”,因为7月16日该条目不存在。我有一千个这样的行和不同的日期。

该表包含按日期显示在操作系统上的问题。我需要找到特定公司遇到的新问题。请帮助!

mysql> select * from testdata;
+------------+----------------+-----------------------+
| date       | os_ver     | account_name    | count |
+------------+----------------+-----------------------+
| 2018-07-16 | 22.345-595 | Company AA1     |     2 |
| 2018-07-16 | 22.346-596 | Company BB1     |     1 |
| 2018-07-16 | 22.346-596 | Company CC1     |     2 |
| 2018-07-27 | 22.346-595 | Company AA1     |     1 |
| 2018-07-27 | 22.346-596 | Company BB1     |     2 |
| 2018-07-27 | 22.346-596 | New Company     |     1 |
| 2018-07-27 | 22.346-596 | Company CC1     |     1 |
+------------+----------------+----------------------

我尝试了以下操作,但未显示唯一项:

SELECT * FROM `testdata` group by timestamp order by timestamp DESC

2 个答案:

答案 0 :(得分:0)

您的问题不是很清楚,但是我想您需要下面的内容

select date,os_ver,account_name,count(*) from testdata
group by date,os_ver,account_name

答案 1 :(得分:0)

您的问题尚不清楚。但是,如果您要查找每个帐户名首次出现的最早日期,请参阅以下查询。

SELECT t.*
FROM test t
LEFT JOIN test t1 
  ON t.date > t1.date
  AND t.account_name = t1.account_name
WHERE t1.date IS NULL;

这是一个SQL Fiddle,用您的示例数据来演示查询。

或者,如果您要查找仅出现一次的所有帐户名,请参阅以下查询。

SELECT t.*
FROM test t
GROUP BY t.account_name
HAVING COUNT(*) = 1;

这是一个SQL Fiddle,用您的示例数据来演示查询。