簡體   English   中英

不同條件下不同記錄的SQL計數

[英]SQL count of distinct records against multiple criteria

我在SQL SERVER“用法”中有一個表,該表由4列組成

userID, appid, licenseid, dateUsed

現在,我需要查詢該表,以便可以找到在一個時間范圍內有多少用戶使用了許可的應用程序。 請記住,即使用戶1在1月1日和2月1日使用了該應用,他們也只會在結果中計為1。 即在時間范圍內的唯一用戶。

所以查詢

where dateUsed > @from  AND dateUsed < @dateTo

我想回來的是一個像這樣的行表

,appid,licenseid

有誰知道如何? 我一直在把count作為子查詢,然后試圖對結果求和,但還沒有成功。

剛剛對此進行了測試,並提供了所需的結果:

SELECT appid, licenseid, COUNT(DISTINCT userID)
FROM usage
WHERE dateUsed BETWEEN @from AND @dateTo
GROUP BY appid, licenseid

這樣的事情應該起作用:

SELECT   appid, licenseid, COUNT(DISTINCT userid) as DistictUsers
FROM     yourTable
WHERE    dateUsed BETWEEN @from AND @dateTo
GROUP BY appid, licenseid

只需復制,粘貼並運行即可查看它是否如您所願:

SELECT appId, licenseId, COUNT(userId)
FROM usage
WHERE dateUsed > @from AND dateUsed < @dateTo
GROUP BY appId, licenseId

您尚未在此處發布查詢。 建議您使用PARTITION BY為每個許可證ID生成唯一的行數。 您可以使用每個單獨的許可證針對用戶數量創建子查詢。 SELECT .... FROM此子查詢,並使用HAVING子句過濾您的首選日期/用戶。 也許不是最好的解釋。 請發布示例查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM