用SQL排名次的問題

2021-09-08 06:35:52 字數 1266 閱讀 4219

用sql排名次的問題 delphi / windows sdk/api

在製作乙個貨物銷量排名報表時,我用一名sql語句聯合查詢出了貨物id及對應的銷售總量:  

sql.text:='select   貨物id,sum(銷量)   as   銷量   from   銷售表   group   by   貨物id   order   by   sum(銷量)   desc'  

現在我想在查詢結果中加乙個名次字段,顯示排名,請教各位這句sql該如何寫

sql.text:='select   '+   quotedstr('排名值')   +   '   as   排名,貨物id,sum(銷量)   as   銷量   from   銷售表   group   by   貨物id   order   by   sum(銷量)   desc'  

這樣會顯示排名字段,而且值全部是「排名值」

大哥,這樣的話,排名字段顯示的內容全都是字元「排名值」,有什麼意思呢,我是想讓排名的值從1、2、3依次遞增

哈,這問題太難了吧,怎麼沒人回答?

沒感覺很難,乙個相關子查詢就能搞定,可能是大家都寫累了吧!  

我幫你寫乙個!  

保留名次:  

select   *,  

rank=(select   count(distinct(銷量))   from   table1   where   銷量》=a.銷量)  

from   table1   a  

不保留名次:  

select   *,  

rank=(select   count(1)   from   table1   where   銷量》a.銷量)+1  

from   table1   a

謝謝樓上的大哥,可惜我看不懂,能不能解釋一下?

我幫忙解釋一下,用保留名次語句會顯示如下:  

1  

2  

2  

2  

3  

4(記錄數一共為6條)  

用不保留名次顯示如下:  

1  

2  

2  

2  

5  

6(記錄數一共為6條)  

其中銷量表示排序字段,用子查詢來獲得大於該銷量的記錄數(就是排名了)。

謝謝笑青天和綠色落葉,我主要是對以上語法不懂,查了一下sql中文參考手冊,搜尋rank,竟找不到一條,在網上查詢後,才知是某資料庫伺服器特有的東西,可我用的是access呀,再請二位老師指教。

用SQL計算名次

幾天前在csdn回答別人的問題 sql怎樣取得指定人的名次 現將結果招錄下來。一 測試資料 select a.into tmp mark from select id 1,myname 小明 mypass 123 union select id 2,myname 小花 mypass 122 unio...

SQL語句 排名問題。

問題描述 一張表tb1中有5個字段,如下 ksh 字元型,xm 字元型,cj 整型,mc 整型,bz 字元 型。原始資料如下 ksh xm cj mc bz 000111 葉丹 170 000112 葉丹丹 170 000113 葉小 169 000114 葉小小 168 000115 葉大 168...

教你用SQL實現統計排名

前言 在某些應用場景中,我們經常會遇到一些排名的問題,比如按成績或年齡排名。排名也有多種排名方式,如直接排名 分組排名,排名有間隔或排名無間隔等等,這篇文章將總結幾種mysql中常見的排名問題。建立測試表 create table scores tb id int auto increment pr...