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

SQLでカウント順に並べ替える方法は?

    問題:

    データをグループに集約しましたが、グループ内の要素の数で降順​​でレコードを並べ替えたいと考えています。

    例:

    データベースには、user 次の列にデータがあります:idfirst_namelast_name 、およびcountry

    id first_name last_name
    1 リサ ウィリアムズ イングランド
    2 ゲイリー アンダース ポーランド
    3 トム ウィリアムズ ポーランド
    4 マイケル ブラウン フランス
    5 スーザン スミス 米国
    6 アン ジョーンズ 米国
    7 エリー ミラー ポーランド

    ユーザーに関するレポートを作成しましょう。結果をcountryでグループ化します 各国のユーザー数を数えます。ただし、ユーザー数の降順でグループも並べ替えます。そうすれば、ユーザー数が最も多い国が一番上に表示されます。

    解決策:

    SELECT country,
     COUNT(id) 
    FROM user
    GROUP BY  country
    ORDER BY COUNT(id) DESC ;
    
    count(id)
    ポーランド 3
    米国 2
    イングランド 1
    フランス 1

    ディスカッション:

    選択したレコードを各グループの要素数で並べ替えるには、ORDER BYを使用します 条項。

    最初のステップは、GROUP BYを使用することです グループを作成する句(この例では、countryでグループ化します 桁)。次に、ORDER BY句で、選択した列の値の数をカウントする集計関数COUNTを使用します。この例では、COUNT(id)を使用して個別のIDをカウントします 。これにより、各グループの要素数が効果的にカウントされます。 ORDER BY 次に、句はその計算に従ってグループをソートします。

    いつものように、ORDER BYでは昇順と降順の両方を使用できます 。 (この例のように)降順が必要な場合は、DESCを使用します キーワード。昇順はデフォルトであるためキーワードは必要ありませんが、ASCを使用できます。 明示的にしたい場合はキーワード。これは同じ例ですが、結果が昇順で並べ替えられています:

    解決策:

    SELECT country,
     COUNT(id) 
    FROM user
    GROUP BY  country
    ORDER BY COUNT(id);
    

    結果は次のとおりです。

    count(id)
    イングランド 1
    フランス 1
    米国 2
    ポーランド 3

    1. 挿入されたレコードのIDを取得します:Php&MS SQL SERVER

    2. SQLServerトランザクションログファイルからデータを回復する方法

    3. ストアドプロシージャで返すデータセットのテーブルにどのように名前を付けることができますか?

    4. MySQLで過去1か月のデータを取得する方法