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

Xグループで最大のNレコードを選択する

    SELECT catX.category
           catX.interest
           t1.user_id
           t1.score
    FROM 
        ( SELECT category 
               , interest 
          FROM tableX 
          WHERE user_id = @user_id_we_are_interested_in     --- specific user 
          ORDER BY interest DESC
          LIMIT @X                         --- top @X categories per specific user 
        ) AS catX 
      JOIN 
        tableX AS t1 
          ON t1.category = catX.category 
      LEFT JOIN 
        tableX AS t2 
          ON  t2.category = t1.category 
          AND t2.score > t1.score 
      GROUP BY t1.category
             , t1.user_id
      HAVING COUNT(t2.score) < @N                      --- top @N users per category 
      ORDER BY catX.interest DESC 
             , t1.score DESC 
    


    1. SQL Serverでデータベースを作成する(T-SQL)

    2. MySQLデータベースのバックアップを復元するときに、バックアップファイル内の不明なオブジェクトの問題が発生する原因は何ですか?

    3. 複数のサーバーでmysql-serverdockerコンテナーを使用してMySQLクラスターを作成する

    4. MySQLバックアップの保護:ガイド