簡體   English   中英

選擇多個記錄-MySQL

[英]SELECT multiple Records - MySQL

嘗試按每種類型排序記錄列表,每種類型限制為5條記錄。

例如:

我有25種不同的GICS代碼,例如2050、4010、2540等。 每個GICS代碼都是不同類型的行業,例如2050是銀行,4010是汽車,2540是化妝品。

現在,每個GICS代碼都分配給多個公司名稱,並得到一個分數。 我希望能夠從每個GICS代碼中選擇排名前5位的公司。

可能嗎? 還是我需要多個SQL?

下面是我的SQL:

select g.4digits, c.company_name, os.* from overall_scores os
join company c
on c.company_id = os.company_id
join gics g
on g.company_id = c.company_id
where g.4digits in ((2550), (4010), (2540))
and os.overall_score <> 'NA'
and os.overall_score <> 'NaN'
order by os.overall_score asc limit 5;

MYSQL不支持可以使用的分析功能,例如ROW_NUMBER。 我們可以使用變量來做到這一點

SELECT T.*
  FROM (SELECT g.4digits, c.company_name, os.*,
               CASE 
                 WHEN @gistype != g.4digits THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS seq,
               @gistype := g.4digits AS var_gistype
          FROM overall_scores os 
          JOIN company c
          ON c.company_id = os.company_id
          JOIN gics g
          ON g.company_id = c.company_id
          AND g.4digits in ((2550), (4010), (2540))
          AND os.overall_score <> 'NA'
          AND os.overall_score <> 'NaN'
          JOIN (SELECT @rownum := NULL, @gistype := '') r
      ORDER BY g.4digits, os.overall_score asc) T
 WHERE T.seq <= 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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