<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks
    列出每一行的排名是一個(gè)常見的需求,可惜 SQL 並沒有一個(gè)很直接的方式達(dá)到這個(gè)需求。要以 SQL 列出排名,基本的概念是要做一個(gè)表格自我連結(jié) (self join),將結(jié)果依序列出,然後算出每一行之前 (包含那一行本身) 有多少行數(shù)。這樣講讀者聽得可能有點(diǎn)困惑,所以最好的方式是用一個(gè)實(shí)例來介紹。假設(shè)我們有以下的表格:

    Total_Sales表格

    Name

    Sales

    John

    10

    Jennifer

    15

    Stella

    20

    Sophia

    40

    Greg

    50

    Jeff

    20

     

    要找出每一行的排名,我們就打入以下的 SQL 語句:

    SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
    FROM Total_Sales a1, Total_Sales a2
    WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
    GROUP BY a1.Name, a1.Sales
    ORDER BY a1.Sales DESC, a1.Name DESC;

    結(jié)果:

    Name

    Sales

    Sales_Rank

    Greg

    50

    1

    Sophia

    40

    2

    Stella

    20

    3

    Jeff

    20

    3

    Jennifer

    15

    5

    John

    10

    6

    我們先來看 WHERE子句。在字句的第一部分 (a1.Sales <= a2.Sales),我們算出有多少筆資料 Sales 欄位的值是比自己本身的值小或是相等。如果在 Sales 欄位中沒有同樣大小的資料,那這部分的 WHERE子句本身就可以產(chǎn)生出正確的排名。

    子句的第二部分,(a1.Sales=a2.Sales and a1.Name = a2.Name),則是讓我們在 Sales 欄位中有同樣大小的資料時(shí) (像 Stella 及 Jeff 這兩筆資料),仍然能夠產(chǎn)生正確的排名。

    posted on 2007-11-19 16:02 渠上月 閱讀(742) 評論(0)  編輯  收藏 所屬分類: sql (sqlServer)
    主站蜘蛛池模板: 亚洲最大的成网4438| 亚洲国产欧美日韩精品一区二区三区| 国产日产亚洲系列最新| 国产日韩在线视频免费播放| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 婷婷久久久亚洲欧洲日产国码AV| 亚洲国产成人久久综合| 精品国产日韩亚洲一区| 久久精品国产免费观看| 国产精品亚洲一区二区无码 | 人人玩人人添人人澡免费| 亚洲人成小说网站色| 亚洲日韩精品无码一区二区三区| 亚洲av无码一区二区三区四区 | 日韩成人免费视频播放| 久久国产精品国产自线拍免费| 亚洲第一福利网站在线观看| 日韩人妻无码精品久久免费一 | igao激情在线视频免费| 亚洲国产美女视频| 国产成人精品免费视频大全五级| 亚洲精品高清国产一线久久| 8x成人永久免费视频| 曰批免费视频播放在线看片二| 亚洲av无码天堂一区二区三区 | 天天影院成人免费观看| 羞羞漫画小舞被黄漫免费| 免费va在线观看| 免费黄色福利视频| 国内少妇偷人精品视频免费| 亚洲人成色99999在线观看| 久久久久亚洲AV无码网站| 中文字幕亚洲专区| 国产大片线上免费看| 57PAO成人国产永久免费视频| 久久久久久亚洲精品无码| 亚洲人成在线播放| 亚洲精品高清国产麻豆专区| 国产AV无码专区亚洲AWWW| 你是我的城池营垒免费观看完整版 | 午夜国产大片免费观看|