我有一个查询,返回Date
Username
与Download Count
用户如果下载次数超过2
。
SELECT CONVERT(DATE, [datetime]) 'Date',
actionby AS 'Username',
Count(*) 'Download Count'
FROM [dbo].[log]
WHERE actiontaken = 'Download'
AND type = 'Document'
AND CONVERT(DATE, [datetime]) BETWEEN
CONVERT(DATE,
'" + scanStartDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "')
AND
CONVERT(DATE, '" + scanEndDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "')
GROUP BY CONVERT(DATE, [datetime]),
actionby
HAVING Count(*) > 1
ORDER BY Count(*) DESC
下面是返回的表
+------------+----------+----------------+
| Date | Username | Download Count |
+------------+----------+----------------+
| 01/01/2018 | Jane | 3 |
+------------+----------+----------------+
Jane
做了3次下载。
但其中 2 个是同一个文件(由 标识fileNumber
)。
如何更改我的查询,使其不会fileNumber
在该日期添加任何重复下载?
例如,Jane 下载了file1
一次,file2
两次。Download Count
将计数2
而不是3
.
谢谢
编辑:实施@salman-a 的回答后:
SELECT CONVERT(DATE, [datetime]) 'Date',
actionby 'Username',
COUNT(DISTINCT filenumber) 'Download Count'
FROM [dbo].[log]
WHERE actiontaken = 'Download'
AND type = 'Document'
AND CONVERT(DATE, [datetime]) BETWEEN
CONVERT(DATE,
'" + scanStartDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "')
AND
CONVERT(DATE, '" + scanEndDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "')
GROUP BY CONVERT(DATE, [datetime]),
actionby
HAVING COUNT(DISTINCT filenumber) > 1
ORDER BY COUNT(DISTINCT filenumber) DESC
如果我误解了,请告诉我。谢谢你。
使用COUNT(DISTINCT fileNumber)
在所有的三个地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句