Mysql COUNT-SQL如何识别重复数据

Mysql COUNT-SQL如何识别重复数据,mysql,sql,Mysql,Sql,这是一个简单的问题,但我找不到答案 我的场景是,我有一个应用程序,用户正在下载它,数据库会捕获用户id、他们下载的周数和下载的版本 这是我的桌子结构 downld_time| downld_version| usr_id 00 0.5 A 00 0.5 B 00 0.5 C 2 1 E 2 1

这是一个简单的问题,但我找不到答案

我的场景是,我有一个应用程序,用户正在下载它,数据库会捕获用户id、他们下载的周数和下载的版本

这是我的桌子结构

downld_time| downld_version| usr_id
00           0.5             A
00           0.5             B
00           0.5             C
 2           1               E
 2           1               F
 3           1.2             F
 4           1.2             E
 5           1.2             A
使用此查询很容易找到下载我的应用程序的用户数

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE 1
现在我的问题是,如果我想深入查看第5周下载的新用户数量,我应该将计数设为0,因为用户A已经在第0周下载了应用程序,并且不是新用户

我还需要知道用户A第一次下载应用程序的时间

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE `downld_time`=5

我应该向上述查询添加什么。

要查找给定一周的新用户数,您可以使用以下命令-

SELECT COUNT(DISTINCT `d1`.`usr_id`)
FROM `download` `d1`
LEFT JOIN `download` `d2`
    ON `d1`.`usr_id` = `d2`.`usr_id`
    AND `d1`.`downld_time` > `d2`.`downld_time`
WHERE `d1`.`downld_time` = 5
AND `d2`.`usr_id` IS NULL

这里的想法是根据usr\u id将下载表加入到自身中,其中usr在表中没有以前的条目。

尝试在第5周找到第一次下载应用程序的用户:

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE downld_time=5 and usr_id not in (
    SELECT usr_id
    FROM download
    WHERE downld_time < 5
)
您需要将“WHERE downld_time 5”更改为“WHERE downld_time<5”
SELECT MIN(downld_time) where usr_id='A'