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

Group By 2である間、フィールドの発生をカウントします

    クエリはサンプルデータとは関係ありません。ただし、集計とランキングが必要なようです。 MySQL 8.0では、次のようにします。

    select
        row_number() over(order by count(*) desc) rn,
        order_id,
        count(*) items_in_order
    from data
    group by order_id
    order by rn
    

    最初の列にrnという名前を付けました (ランク ):idが見つかりました テーブルにその名前の列がすでにあるため、ここでは混乱します。

    以前のバージョンでは、1つのオプションでrow_number()の代わりにセッション変数を使用していました :

    select @rn := @rn + 1 rn, order_id, items_in_order
    from (
        select order_id, count(*) items_in_order
        from data
        group by order_id
        order by items_in_order desc
    ) t
    cross join (select @rn := 0) r
    order by items_in_order desc
    



    1. 列値でグループ化された単一のテーブルからの組み合わせ

    2. ストアドプロシージャからのデータの選択

    3. ApacheHadoopデータ出力をMysqlデータベースに保存する

    4. SQL Union –UNION演算子に関する包括的なガイド