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

MySQLの各グループのトップKを取得する

    これを試してみてください:

    select postid, clicks,
        @num := if(@year = @year and @month = month, @num + 1, 1) row_number,
        @year := year year, @month := month month
    from (
        select * from t
        order by year, month, clicks desc
    ) s, (select @num := 0, @year := '', @month := '') init
    group by year, month, postid, clicks
    having row_number <= 2
    order by year, month, clicks desc
    

    フィドルこちら




    1. この左結合が1つのレコードのみを返すのはなぜですか?

    2. 別のユーザーのイベントをリッスンするユーザーからOracleでトリガーを作成します

    3. 副選択による更新を使用したPostgreSQLレコードの並べ替え

    4. MongoDBの基本:役割ベースのアクセス制御(RBAC)の構成