Mysqlチュートリアルでのグループランキングの実装例の詳細な説明

Mysqlチュートリアルでのグループランキングの実装例の詳細な説明

1. データソース

ここに画像の説明を挿入

2. データの総合順位

1) 総合ランキング

数字は 1 から始まり、順に下方にランク付けされます (同じ値でもランクが異なります)。

@rank を 0 に設定します。
選択 
	都市、
	スコア、 
	@rank := @rank+1 ランク 
csから 
スコア降順で並び替え;

結果は次のとおりです。

ここに画像の説明を挿入

2) 同順位

同一の値は同じランクを持ちます(ただし、空きスロットは残りません)。

@rank=0、@price=null を設定します。
cs.* を選択し、
 @price = score の場合、@rank 
 @price := score の場合、@rank := @rank+1 でランクが終了します  
 cs からスコア降順で並び替えます。
 -- クエリスコア値が@priceの場合、@rankを出力します。
 -- 等しくない場合は、スコア値を@priceに割り当て、@rank := @rank+1を出力します。
 
-- または @rank=0、@price=null を設定します。
選択 
	都市、スコア、ランク 
から 
(cs.*を選択、
	@rank := if(@p=スコア、@rank、@rank+1) ランク、
	@p := スコア
csから 
スコア順(降順) a;

結果は次のとおりです。

ここに画像の説明を挿入

3) 同順位

同じ値は同じランクを持ちます (ただし空白が残ります)。

@rank=0、@price=null、@z=1 を設定します。
選択 
	都市、スコア、ランク 
から 
(選択 
	cs.*,
	@rank := if(@p=スコア、@rank、@z) ランク、
	@p := スコア、@z :=@z+1
csから 
スコア順(降順) a;

結果は次のとおりです。

ここに画像の説明を挿入

3. データのグループ化後のグループ内ランキング

1) グループ総合順位

数字は 1 から始まり、順に下方にランク付けされます (同じ値でもランクが異なります)。

@rank=0、@c=null を設定します。
選択 
	cs.city、cs.score、
	@rank := if(@c = city,@rank+1,1) ランク、
	@c := 都市
csから 
cs.city、cs.score で並べ替えます。

結果は次のとおりです。

ここに画像の説明を挿入

2) グループ分け後の同順位

グループ内で同じ値を持つ項目は同じ順位を持ち、空の位置を占有しません。

@rank=0、@c=null、@s=null を設定します。
選択 
	cs.city、cs.score、
	@rank := if(@c=city,if(@s=score,@rank,@rank+1),1) ランク、
	@c := 都市、
	@s :=スコア 
csから 
cs.city、cs.score で並べ替えます。

結果は次のとおりです。

ここに画像の説明を挿入

3) グループ分け後の同順位

グループ内で同じ値を持つ項目は同じ順位を持ち、空の位置を占める必要があります。

@rank=0、@c=null、@s=null を設定します。
選択 
	cs.city、cs.score、
	@rank := if(@c=city,if(@s=score,@rank,@rank+1),1) ランク、
	@c := 都市、
	@s :=スコア 
csから 
cs.city、cs.score で並べ替えます。

結果は次のとおりです。

ここに画像の説明を挿入

4. グループ分け後、各グループの上位2つを取ります

①方法1:3つの方法でグループ化して順位付けし、順位値を制限する

@rank=0、@z=0、@c=null、@s=null を設定します。
a.city、a.score、a.rankから選択 
(選択 
	cs.city 都市、cs.score スコア、
	@z := if(@c=city,@z+1,1)、
	@rank := if(@c=city,if(@s=score,@rank,@z),1) ランク、
	@c := 都市、
	@s :=スコア 
csから 
cs.city、cs.score desc で並び替える
ここで、a.rank<=2;

結果は次のとおりです。

ここに画像の説明を挿入

② 社内調査

cs cから*を選択
どこ (
    count(*) を cs から選択します
    c.city=cs.city かつ c.score<cs.score )<2 の場合
都市、スコア、降順で並べ替え;

結果は次のとおりです。

ここに画像の説明を挿入

上記コードの実行原理は次のとおりです。

ここに画像の説明を挿入

上記はMysqlチュートリアルグループランキング実装例の詳細な内容です。Mysqlグループランキングの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQLのSQL文の分類を数える
  • MySQL 分類ランキングとグループ化 TOP N の例の詳細な説明

<<:  HTML でファイルをアップロードするときに使用する <input type="file"> 要素のスタイルをカスタマイズします。

>>:  Linux の一般的なハードディスク管理コマンドの紹介

推薦する

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...

ウェブデザインにおけるインタラクション: ページングの問題に関する簡単な説明

機能: 前のページまたは次のページにジャンプします。要素: ページングの基本要素は、前のページ + ...

HTMLバージョン宣言DOCTYPEタグ

通常のウェブサイトのソースコードを開くと、ソースコードは<!DOCTYPE htmlで始まる必...

HTML チュートリアル、HTML デフォルト スタイル

html 、アドレス、引用、本文、 dd 、 div 、 dl 、 dt 、フィールドセット、フォ...

JS ES の新機能: 拡張演算子の紹介

1. スプレッド演算子スプレッド演算子は 3 つのドット ... で、複数の引数 (関数呼び出しなど...

CSSファイルをインポートする3つの方法の詳細な説明

CSS を導入する方法には、インライン スタイル、内部スタイル シート、外部スタイル シートの 3 ...

実行後にdocker nginxにアクセスできない問題の解決策

## 1最近、docker デプロイメントを学習しており、当初は nginx を docker 化す...

MYSQLクエリデータの結果に自動的に番号を付ける方法

序文実際、クエリ中に結果に番号が付けられるこのような状況に遭遇したことは一度もありません。同僚が転職...

Linux でスレッドを作成するための pthread_create の具体的な使用法

pthread_create関数機能紹介pthread_createはUNIX環境のスレッド作成関数...

Dockerコンテナが外部ネットワークにpingできない問題を解決する

今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...

ZabbixはPSK共有キーを使用してサーバーとエージェント間の通信を暗号化します。

Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

Linux 上でプロジェクトをリリースするために Tomcat を展開するプロセスにおけるさまざまな問題と解決策

プロジェクトをプロジェクトサイトのテスト環境にデプロイするJDK1.8トムキャット8.5 Maven...

Vue SPA ファースト スクリーン最適化ソリューション

目次序文最適化ソ連オンデマンドインポート1. ルーティングファイルでコンポーネントをオンデマンドでイ...

Angular CLI リリース パスの構成項目の簡単な分析

序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...