以下查詢回傳:多個日期(每個用戶每天的計數)、IP 計數、用戶名。
我需要它每天只回傳用戶的最大值(只有最高的一個)。
如果我從組中洗掉用戶名,它就可以正常作業。問題是我還需要表結果中的用戶名。
我嘗試使用沒有鎖定的子查詢。
任何幫助,將不勝感激。
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
uj5u.com熱心網友回復:
添加 ROW_NUMBER,將其包裝在子查詢中,然后對其進行過濾。
SELECT [DATE], Username, CountClientIP
FROM
(
SELECT
FORMAT([UTCTimestamp],'yyyy-MM-dd') AS [DATE],
T.Username,
COUNT(DISTINCT clientIP) AS [CountClientIP],
ROW_NUMBER() OVER (PARTITION BY FORMAT([UTCTimestamp],'yyyy-MM-dd')
ORDER BY COUNT(DISTINCT clientIP) DESC) AS rn
FROM [DBNAME].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')
) q
WHERE rn = 1
ORDER BY [DATE]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367501.html
標籤:sql sql-server 选择
上一篇:創建列時不允許為0
