ホームページ >データベース >mysql チュートリアル >MySQL で顧客を年齢と性別でランク付けするにはどうすればよいですか?
MySQL での顧客のランク付け: 実践ガイド
MySQL には組み込みのランク関数が用意されていないため、顧客を年齢と性別でランク付けするにはカスタム クエリが必要です。 このガイドでは、ユーザー定義変数を使用して効率的にランキングを行うソリューションを示します。
クエリ:
このクエリは変数を利用してランクを割り当てます:
<code class="language-sql">SELECT first_name, age, gender, @curRank := @curRank + 1 AS rank FROM person p, (SELECT @curRank := 0) r ORDER BY age;</code>
賢い部分は (SELECT @curRank := 0) r
サブクエリです。これにより、ランキング変数 @curRank
が適切に初期化され、別の SET
ステートメントが不要になります。
例:
サンプルの person
テーブルを考えてみましょう:
<code class="language-sql">CREATE TABLE person (id int, first_name varchar(20), age int, gender char(1)); INSERT INTO person VALUES (1, 'Bob', 25, 'M'); INSERT INTO person VALUES (2, 'Jane', 20, 'F'); INSERT INTO person VALUES (3, 'Jack', 30, 'M'); INSERT INTO person VALUES (4, 'Bill', 32, 'M'); INSERT INTO person VALUES (5, 'Nick', 22, 'M'); INSERT INTO person VALUES (6, 'Kathy', 18, 'F'); INSERT INTO person VALUES (7, 'Steve', 36, 'M'); INSERT INTO person VALUES (8, 'Anne', 25, 'F');</code>
クエリ結果:
クエリを実行すると、次のランク付けされた顧客データが得られます:
<code>+------------+------+--------+------+ | first_name | age | gender | rank | +------------+------+--------+------+ | Kathy | 18 | F | 1 | | Jane | 20 | F | 2 | | Nick | 22 | M | 3 | | Bob | 25 | M | 4 | | Anne | 25 | F | 5 | | Jack | 30 | M | 6 | | Bill | 32 | M | 7 | | Steve | 36 | M | 8 | +------------+------+--------+------+</code>
これは、顧客を年齢別にランク付けしていることを明確に示しています。 ランキングに性別を組み込むには、ORDER BY
句を調整して、性別を二次的な並べ替え基準として含めます (例: ORDER BY age, gender
)。
以上がMySQL で顧客を年齢と性別でランク付けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。