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

    <bdo id='pAyw2'></bdo><ul id='pAyw2'></ul>

        <i id='pAyw2'><tr id='pAyw2'><dt id='pAyw2'><q id='pAyw2'><span id='pAyw2'><b id='pAyw2'><form id='pAyw2'><ins id='pAyw2'></ins><ul id='pAyw2'></ul><sub id='pAyw2'></sub></form><legend id='pAyw2'></legend><bdo id='pAyw2'><pre id='pAyw2'><center id='pAyw2'></center></pre></bdo></b><th id='pAyw2'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='pAyw2'><tfoot id='pAyw2'></tfoot><dl id='pAyw2'><fieldset id='pAyw2'></fieldset></dl></div>

        <legend id='pAyw2'><style id='pAyw2'><dir id='pAyw2'><q id='pAyw2'></q></dir></style></legend>

        <tfoot id='pAyw2'></tfoot>

        <small id='pAyw2'></small><noframes id='pAyw2'>

        在 GROUP BY 中使用 LIMIT 以獲得每組 N 個結果?

        Using LIMIT within GROUP BY to get N results per group?(在 GROUP BY 中使用 LIMIT 以獲得每組 N 個結果?)

          <legend id='UkR90'><style id='UkR90'><dir id='UkR90'><q id='UkR90'></q></dir></style></legend>

          <small id='UkR90'></small><noframes id='UkR90'>

            <bdo id='UkR90'></bdo><ul id='UkR90'></ul>

            1. <i id='UkR90'><tr id='UkR90'><dt id='UkR90'><q id='UkR90'><span id='UkR90'><b id='UkR90'><form id='UkR90'><ins id='UkR90'></ins><ul id='UkR90'></ul><sub id='UkR90'></sub></form><legend id='UkR90'></legend><bdo id='UkR90'><pre id='UkR90'><center id='UkR90'></center></pre></bdo></b><th id='UkR90'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='UkR90'><tfoot id='UkR90'></tfoot><dl id='UkR90'><fieldset id='UkR90'></fieldset></dl></div>
                  <tbody id='UkR90'></tbody>
                <tfoot id='UkR90'></tfoot>
                  本文介紹了在 GROUP BY 中使用 LIMIT 以獲得每組 N 個結果?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  以下查詢:

                  SELECT
                  year, id, rate
                  FROM h
                  WHERE year BETWEEN 2000 AND 2009
                  AND id IN (SELECT rid FROM table2)
                  GROUP BY id, year
                  ORDER BY id, rate DESC
                  

                  產量:

                  year    id  rate
                  2006    p01 8
                  2003    p01 7.4
                  2008    p01 6.8
                  2001    p01 5.9
                  2007    p01 5.3
                  2009    p01 4.4
                  2002    p01 3.9
                  2004    p01 3.5
                  2005    p01 2.1
                  2000    p01 0.8
                  2001    p02 12.5
                  2004    p02 12.4
                  2002    p02 12.2
                  2003    p02 10.3
                  2000    p02 8.7
                  2006    p02 4.6
                  2007    p02 3.3
                  

                  我只想要每個 id 的前 5 個結果:

                  What I'd like is only the top 5 results for each id:

                  2006    p01 8
                  2003    p01 7.4
                  2008    p01 6.8
                  2001    p01 5.9
                  2007    p01 5.3
                  2001    p02 12.5
                  2004    p02 12.4
                  2002    p02 12.2
                  2003    p02 10.3
                  2000    p02 8.7
                  

                  有沒有辦法使用某種在 GROUP BY 中起作用的類似 LIMIT 的修飾符來做到這一點?

                  Is there a way to do this using some kind of LIMIT like modifier that works within the GROUP BY?

                  推薦答案

                  你可以使用 GROUP_CONCAT 聚合函數將所有年份放入一個列中,按 id 分組并按 rate 排序:

                  You could use GROUP_CONCAT aggregated function to get all years into a single column, grouped by id and ordered by rate:

                  SELECT   id, GROUP_CONCAT(year ORDER BY rate DESC) grouped_year
                  FROM     yourtable
                  GROUP BY id
                  

                  結果:

                  -----------------------------------------------------------
                  |  ID | GROUPED_YEAR                                      |
                  -----------------------------------------------------------
                  | p01 | 2006,2003,2008,2001,2007,2009,2002,2004,2005,2000 |
                  | p02 | 2001,2004,2002,2003,2000,2006,2007                |
                  -----------------------------------------------------------
                  

                  然后你可以使用 FIND_IN_SET,返回第一個參數在第二個參數中的位置,例如.

                  And then you could use FIND_IN_SET, that returns the position of the first argument inside the second one, eg.

                  SELECT FIND_IN_SET('2006', '2006,2003,2008,2001,2007,2009,2002,2004,2005,2000');
                  1
                  
                  SELECT FIND_IN_SET('2009', '2006,2003,2008,2001,2007,2009,2002,2004,2005,2000');
                  6
                  

                  使用 GROUP_CONCATFIND_IN_SET 的組合,并通過 find_in_set 返回的位置進行過濾,然后您可以使用此查詢,該查詢僅返回每個 ID 的前 5 年:

                  Using a combination of GROUP_CONCAT and FIND_IN_SET, and filtering by the position returned by find_in_set, you could then use this query that returns only the first 5 years for every id:

                  SELECT
                    yourtable.*
                  FROM
                    yourtable INNER JOIN (
                      SELECT
                        id,
                        GROUP_CONCAT(year ORDER BY rate DESC) grouped_year
                      FROM
                        yourtable
                      GROUP BY id) group_max
                    ON yourtable.id = group_max.id
                       AND FIND_IN_SET(year, grouped_year) BETWEEN 1 AND 5
                  ORDER BY
                    yourtable.id, yourtable.year DESC;
                  

                  請參閱 fiddle 此處.

                  Please see fiddle here.

                  請注意,如果多于一行可以具有相同的費率,您應該考慮在費率列而不是年份列上使用 GROUP_CONCAT(DISTINCT rate ORDER BY rate).

                  Please note that if more than one row can have the same rate, you should consider using GROUP_CONCAT(DISTINCT rate ORDER BY rate) on the rate column instead of the year column.

                  GROUP_CONCAT 返回的字符串的最大長度是有限的,因此如果您需要為每個組選擇幾條記錄,這很有效.

                  The maximum length of the string returned by GROUP_CONCAT is limited, so this works well if you need to select a few records for every group.

                  這篇關于在 GROUP BY 中使用 LIMIT 以獲得每組 N 個結果?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

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

                  相關文檔推薦

                  How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數根據 N 個先前值來決定接下來的 N 個行)
                  reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用選擇表達式的結果;條款?)
                  Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函數的 ignore 選項是忽略整個事務還是只是有問題的行?) - IT屋-程序員軟件開發技
                  Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時出錯,使用 for 循環數組)
                  pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調用 o23.load 時發生錯誤 沒有合適的驅動程序)
                  How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數據庫表作為 Spark 數據幀讀取?)

                      <legend id='R28n9'><style id='R28n9'><dir id='R28n9'><q id='R28n9'></q></dir></style></legend>
                        <tbody id='R28n9'></tbody>
                        <bdo id='R28n9'></bdo><ul id='R28n9'></ul>
                          <tfoot id='R28n9'></tfoot>

                          <small id='R28n9'></small><noframes id='R28n9'>

                          <i id='R28n9'><tr id='R28n9'><dt id='R28n9'><q id='R28n9'><span id='R28n9'><b id='R28n9'><form id='R28n9'><ins id='R28n9'></ins><ul id='R28n9'></ul><sub id='R28n9'></sub></form><legend id='R28n9'></legend><bdo id='R28n9'><pre id='R28n9'><center id='R28n9'></center></pre></bdo></b><th id='R28n9'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='R28n9'><tfoot id='R28n9'></tfoot><dl id='R28n9'><fieldset id='R28n9'></fieldset></dl></div>
                            主站蜘蛛池模板: 免费能直接在线观看黄的视频 | 欧美亚洲另类丝袜综合网动图 | 国产欧美日韩精品在线观看 | 亚洲国产视频一区二区 | 国产美女在线精品免费 | 日本免费黄色一级片 | 国产精品久久久久久久久久久久久 | 亚洲国产精品视频 | 色综合久 | av电影一区二区 | 久久久久久九九九九九九 | 国产精品久久久久久久久久久久久久 | 国产99久久久国产精品下药 | 99国产精品久久久久 | 在线亚洲免费 | 二区三区视频 | 九九成人| 精品久久影院 | 欧美日韩综合视频 | 综合久久久 | 4h影视 | 久草综合在线视频 | 亚洲一区中文字幕 | 中文字幕在线免费观看 | 欧美日韩亚洲在线 | 国产一区二区毛片 | av一区二区在线观看 | 欧美高清成人 | 国产精品精品久久久久久 | www.色午夜.com| 天天综合久久 | 麻豆精品国产91久久久久久 | 欧美日韩亚洲国产 | www.99热| 中文字幕在线人 | 亚洲精品福利视频 | 在线精品一区 | 国产97碰免费视频 | 视频一二区 | 免费人成在线观看网站 | 日韩在线视频免费观看 |