【发布时间】:2022-01-05 01:34:06
【问题描述】:
以下查询返回:多个日期(每个用户每天的计数)、IP 计数、用户名。
我需要它每天只返回用户的最大值(只返回最高的一个)。
如果我从 group by 中删除用户名,它就可以正常工作。问题是我还需要表格结果中的用户名。
我尝试使用没有锁的子查询。
任何帮助将不胜感激。
SELECT DISTINCT
FORMAT([UTCTimestamp], 'yyyy-MM-dd') AS 'DATE',
T.Username,
COUNT(clientIP) AS "CountClientIP"
FROM
dbo.tablename O
LEFT JOIN
[DBNAME2]..vwAD_tablename T ON T.UserID = O.userID
LEFT JOIN
[DBNAME1]..Event E ON E.Code = O.Code
WHERE
FORMAT([UTCTimestamp], 'yyyy-MM-dd') LIKE '2018-01-%'
AND T.Username IS NOT NULL
GROUP BY
T.Username, FORMAT([UTCTimestamp], 'yyyy-MM-dd')
ORDER BY
FORMAT([UTCTimestamp], 'yyyy-MM-dd'), COUNT(clientIP) DESC
【问题讨论】:
-
您好,欢迎来到 SO。如果您包含一些示例数据和预期结果,则此类问题会得到更好更快的回答。请将它们添加到您的问题中,但不是作为图像,而是作为文本,我们可以复制/粘贴。
-
旁白:
CAST(... AS date)更适合从datetime截断时间分量。你的left joins 没有意义,因为你上面有where,也许这些条件应该在on或者它应该是inner join
标签: sql sql-server select