[LeetCode] 178.ランクスコアスコアをランク付けする SQL クエリを記述します。2 つのスコアが同点の場合、両方のランキングは同じになります。同点の後、次のランキング番号は次の連続する整数値になることに注意してください。つまり、ランク間に「穴」があってはなりません。
たとえば、上記のスコア テーブルの場合、クエリによって次のレポートが生成されます (最高スコア順)。
この質問では、スコア表が与えられ、スコアを並べ替えるように求められます。 要件は、同じスコアが同じランクにあり、次のスコアが次の連続したランクにあり、間に空白の数字があってはならないことです。 私はこの質問をスティーブンの投稿に完全に従って書きました。 私は偉大な神を崇拝しています... 偉大な神は4つの方法を要約したので、1つずつ崇拝して学びましょう。 まず、最初の解決策を見てください。 問題を解決するアイデアは、表内の異なるスコアが各スコア以上であるかどうかを調べ、降順に並べることです。 次のコードを参照してください。 解決策1: SELECTスコア、 (SELECT COUNT(DISTINCT Score) FROM Scores WHERE Score >= s.Score) ランク FROM スコア s ORDER BY スコア DESC; 解決方法は上記と同じですが、書き方が少し異なります。 解決策2: SELECTスコア、 (SELECT COUNT(*) FROM (SELECT DISTINCT Score s FROM Scores) t WHERE s >= Score) ランク スコアからスコアの順に並べ替え、スコアの順に降順で並べ替えます。 次のソリューションでは、内部結合を使用します。結合は、Inner Join の略語です。これは、それ自体を内部結合します。条件は、右側のテーブルのスコアが左側のテーブルのスコア以上であることです。次に、グループがグループ化され、スコアの降順で並べられます。これは非常に巧妙なソリューションです。 解決策3: SELECT s.Score、COUNT(DISTINCT t.Score) ランク Scores s から Scores t を結合し、 s.Score <= t.Score を ON します。 GROUP BY s.Id ORDER BY s.Score DESC; 次のソリューションは、上記の 3 つのソリューションとは異なります。ここでは 2 つの変数が使用されています。使用する場合、変数の前に @ を追加する必要があります。ここでの := は割り当てを意味します。前に Set キーワードがある場合は、= 記号を使用して値を直接割り当てることができます。そうでない場合は、:= を使用して値を割り当てる必要があります。rank と pre という 2 つの変数があり、rank は現在のランキングを表し、pre は前のスコアを表します。次のコードの <> は等しくないことを意味します。左辺と右辺が等しくない場合は、true または 1 が返されます。等しい場合は、false または 0 が返されます。ランクを0、プレを-1に初期化し、スコアを降順に並べます。スコア4の場合、プレには4が割り当てられますが、これは前のプレ値-1とは異なります。そのため、ランクは1増加し、スコア4のランクは1になります。次のスコアはまだ4なので、プレには4が割り当てられますが、これは前の4と同じなので、ランクは0増加し、このスコア4のランクも1になります。このようにして、すべてのスコアのランクを計算できます。 解決策4: SELECTスコア、 @rank := @rank + (@pre <> (@pre := スコア)) ランク スコアから、(SELECT @rank := 0, @pre := -1) INIT ORDER BY スコア DESC; 参考文献: https://leetcode.com/discuss/40116/simple-short-fast これで、LeetCode (178. スコアランキング) の SQL 実装に関するこの記事は終了です。より関連性の高い SQL 実装スコアランキングコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
Linux のファイル権限まず、現在のディレクトリ内のファイルの内容を確認しましょう。 ls -l ...
最近、VMware 仮想マシンで CentOS を試していたのですが、インストール後にインターネット...
効果画像: 実装コード: <テンプレート> <div id="map&q...
React 16の内容です。最新技術ではありませんが、ドキュメントで調べるまであまり話題に上がらなか...
ビンログBinLog は、データベース テーブル構造の変更 (テーブルの作成、変更など) とテーブル...
バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...
MySQLはインストール版と無料インストール版に分かれていますインストール版の拡張子はmsi、無料イ...
イベント委任を使用してメッセージ ボード機能を実装します。 <!DOCTYPE html>...
目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...
マスタースレーブ同期 (マスタースレーブレプリケーションとも呼ばれる) は、マスタースレーブデータの...
1 はじめに PostgreSQL は、非常に充実した機能を備えたフリーソフトウェアのオブジェクトリ...
この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...
目次etcdの機能etcdが独自の高可用性クラスタを構築するには、主に3つの形式があります。今回構築...
Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...