始终获取SQL Server中每个用户的最高值
我正在为学校做一些作业,但我被困在这件事上了。我们需要获得每个用户使用最多的语言。右栏Gebruikt表示已使用。这是一项荷兰语作业,所以我需要用荷兰语完成。一切都是可行的,但我只需要欧文的一个结果,但我尝试的是我无法让它发挥作用 代码VV始终获取SQL Server中每个用户的最高值,sql,sql-server,Sql,Sql Server,我正在为学校做一些作业,但我被困在这件事上了。我们需要获得每个用户使用最多的语言。右栏Gebruikt表示已使用。这是一项荷兰语作业,所以我需要用荷兰语完成。一切都是可行的,但我只需要欧文的一个结果,但我尝试的是我无法让它发挥作用 代码VV SELECT [Profile].ProfileName, Language.Name as 'Language', COUNT(*) as 'Gebruikt' FROM (((Profile INNER JOIN WatchedMedia ON [Wat
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
代码VV的VV结果
您可以使用“行数”窗口功能:
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