久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

優化查詢以在 MS SQL Server 中創建排名

Optimize a query for creating a ranking in MS SQL Server(優化查詢以在 MS SQL Server 中創建排名)
本文介紹了優化查詢以在 MS SQL Server 中創建排名的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在創建一個應用程序,用戶可以在其中進行鍛煉.他們通過應用程序傳遞結果,這些結果存儲在 SQL Server 數據庫中.結果以這種方式保存在 SQL Server 表中:

I'm creating an application where users do workouts. They pass on their results via an app, and these results are stored in an SQL Server database. Results are saved in this way in a SQL Server table:

我想編寫一個查詢,根據每個用戶的最佳分數創建一個排名.這是我目前所擁有的:

I want to write a query to create a ranking based on the best score of each user. This is what I have so far:

SELECT id, 
       workout_id, 
       level_id, 
       a.user_id, 
       total_time, 
       score, 
       datetime_added
FROM nodefit_rankings_fitness as a INNER JOIN
    (
     SELECT user_id, 
            MAX(score) AS MAXSCORE 
     FROM nodefit_rankings_fitness 
     GROUP BY user_id
    ) AS lookup
ON  lookup.user_id = a.user_id
    AND 
    lookup.MAXSCORE  =  a.score
ORDER BY score DESC, 
         datetime_added DESC

這會產生這個排名:

問題是,如果用戶多次達到相同的最高分,他將多次出現在排名中.必須調整查詢,以便當用戶多次獲得相同的最高分數時,排名中僅顯示最后一次嘗試的結果(基于 datetime_ added 列).

The problem is that if a user has achieved the same maximum score a number of times, he will appear multiple times in the ranking. The query must be adjusted so that when a user has the same maximum score a few times, only the result of the last attempt (based on the datetime_added column) is displayed in the rankings.

不幸的是,我自己找不到解決方案.我們當然感謝您的幫助.

Unfortunately, I cannot find a solution myself. Help is certainly appreciated.

推薦答案

如果你關心性能,你也應該嘗試關聯子查詢:

If you care about performance, you should also try a correlated subquery:

SELECT id, workout_id, level_id, a.user_id, total_time, score, datetime_added
FROM nodefit_rankings_fitness nrf
WHERE nrf.id = (SELECT TOP (1) nrf2.id
                FROM nodefit_rankings_fitness nrf2
                WHERE nrf2.user_id = nrf.user_id
                ORDER BY nrf2.score DESC
               )
ORDER BY score DESC, datetime_added DESC;

特別是,這可以利用 nodefit_rankings_fitness(user_id, score desc, id) 上的索引.

In particular, this can take advantage of an index on nodefit_rankings_fitness(user_id, score desc, id).

這篇關于優化查詢以在 MS SQL Server 中創建排名的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 国产一二区在线 | 亚洲视频在线观看免费 | 久久精品久久综合 | 一区二区三区四区电影视频在线观看 | 日本视频在线播放 | 黄色成人免费看 | 欧美日韩亚洲一区 | 在线伊人网 | 日本三级日产三级国产三级 | 岛国av一区二区三区 | 久久网国产 | 精品国产乱码久久久久久闺蜜 | 干干天天 | 涩涩视频在线播放 | 精品国产91 | 成人h电影在线观看 | 免费成人高清在线视频 | 日韩在线精品视频 | 91av视频在线观看 | xnxx 日本免费 | 日本午夜精品一区二区三区 | 少妇特黄a一区二区三区88av | www.久久影视 | 亚洲一区在线观看视频 | 久久久久久久av麻豆果冻 | 在线观看视频中文字幕 | 国产九九九九 | 欧美一区2区三区4区公司二百 | 91精品一区二区三区久久久久 | 日韩成人国产 | 久久久久久久久久影视 | 久久y| 欧美日本在线观看 | 午夜精品久久久久久 | 久久91 | hitomi一区二区三区精品 | 国产精品成av人在线视午夜片 | 97精品超碰一区二区三区 | 国产视频久久久 | 国产亚洲精品美女久久久久久久久久 | 奇米四色在线观看 |