SQL如何识别重复项

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               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

我应该在上面的查询中添加什么。

最佳答案

尝试此操作查找第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
)

要查找用户A下载应用程序的第一周:
SELECT MIN(downld_time) where usr_id='A'

关于mysql - COUNT-SQL如何识别重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17846843/

10-10 05:23