[英]SQL Union with COUNT() Function not returning expected results
我正在嘗試返回所有使用語音會議的MSFT Lync用戶及其使用次數。 我必須使用UNION,因為該表的User1和User2都參加了我想要在一欄中顯示的會議。
這是SQL:
SELECT U.UserUri,
COUNT(U.UserUri) AS COUNT
FROM SessionDetails AS S
INNER JOIN Users U
ON S.User1Id = U.UserId
WHERE MediaTypes = 48
GROUP BY U.UserUri
UNION
SELECT U.UserUri,
COUNT(U.UserUri) AS COUNT
FROM SessionDetails AS S
INNER JOIN Users U
ON S.User2Id = U.UserId
WHERE MediaTypes = 48
GROUP BY U.UserUri
返回的結果是,參加過一個以上會議的任何人兩次出現在列表中,共有兩個計數。 實際上,在鍵入此內容后,必須按User1Id和User2ID對其進行分組。 如果一個人有9個對話,但只發起了6個對話,則它們將分別是User1 6次和User2 3次,從而創建兩個不同的分組。
現在我知道為什么了,但是有什么主意如何不返回重復的UserUri? 任何幫助,不勝感激!
聚集在UNION之后嗎?
SELECT
T.UserUri, COUNT(*)
FROM
(
SELECT U.UserUri
FROM SessionDetails AS S
INNER JOIN Users U
ON S.User1Id = U.UserId
WHERE MediaTypes = 48
UNION ALL
SELECT U.UserUri
FROM SessionDetails AS S
INNER JOIN Users U
ON S.User2Id = U.UserId
WHERE MediaTypes = 48
) T
GROUP BY
T.UserUri
編輯:固定別名,將ALL添加到UNION
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.