sql >> データベース >  >> RDS >> Mysql

SQLは毎月トップ5を選択します

    このクエリを試してください

    select * from
    (select 
    @rn:=if(@prv=product_id, @rn+1, 1) as rId,
    @prv:=product_id as product_id,
    year, 
    month,
    revenue
    from tbl
    join
    (select @prv:=0, @rn:=0)tmp
    order by 
    product_id, revenue desc) a
    where rid<=5
    

    SQL FIDDLE

    | RID | PRODUCT_ID | YEAR | MONTH | REVENUE |
    ---------------------------------------------
    |   1 |          1 | 2013 |     1 |     100 |
    |   2 |          1 | 2013 |     1 |      90 |
    |   3 |          1 | 2013 |     1 |      70 |
    |   4 |          1 | 2013 |     1 |      60 |
    |   5 |          1 | 2013 |     1 |      50 |
    |   1 |          2 | 2013 |     1 |    5550 |
    |   2 |          2 | 2013 |     1 |     550 |
    |   3 |          2 | 2013 |     1 |     520 |
    |   4 |          2 | 2013 |     1 |     510 |
    |   5 |          2 | 2013 |     1 |     150 |
    


    1. Djangoカスタムの一意の一緒の制約

    2. トランザクション内でautocommit=0を設定すると、何かが行われますか?

    3. 不正なダウンロードからファイルを保護する方法

    4. 動的SQL-構文とセマンティクスを確認します