[英]Get always the highest value of each user in SQL Server
我正在為學校做一些作業,但我被困在這個作業上。 我們需要獲取每個用戶最常用的語言。 (右欄“Gebruikt”表示使用過。它是荷蘭語作業,所以我需要用荷蘭語做這個)。 一切正常,但我只需要 Irwin 的一個結果,但我嘗試的卻無法讓它發揮作用。
代碼 vvvv
SELECT [Profile].ProfileName, Language.Name as 'Language', COUNT(*) as 'Gebruikt'
FROM (((Profile
INNER JOIN WatchedMedia ON [WatchedMedia].ProfileID = Profile.ProfileID)
INNER JOIN Subtitles ON [WatchedMedia].SubtitleID = Subtitles.SubtitleID)
INNER JOIN Language ON Language.LanguageID = Subtitles.LanguageID )
WHERE Language.Name <> Profile.Language
GROUP BY Profile.ProfileName, WatchedMedia.ProfileID, Language.Name
ORDER BY COUNT(*) DESC
GO
vvvv 代碼結果 vvvv
您可以使用ROW_NUMBER()
window function 來做到這一點:
SELECT t.ProfileName, t.Language, t.Gebruikt
FROM (
SELECT
[Profile].ProfileName, Language.Name as Language, COUNT(*) as Gebruikt,
ROW_NUMBER() OVER (PARTITION BY [Profile].ProfileName ORDER BY COUNT(*) DESC) rn
FROM Profile
INNER JOIN WatchedMedia ON [WatchedMedia].ProfileID = Profile.ProfileID
INNER JOIN Subtitles ON [WatchedMedia].SubtitleID = Subtitles.SubtitleID
INNER JOIN Language ON Language.LanguageID = Subtitles.LanguageID
WHERE Language.Name <> Profile.Language
GROUP BY Profile.ProfileName, WatchedMedia.ProfileID, Language.Name
) t
WHERE t.rn = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.