簡體   English   中英

始終獲取SQL服務器中每個用戶的最高值

[英]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.

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