タグ付けされた質問 「greatest-n-per-group」

グループごとに最大/最小値を持つ行をクエリします。

16
各GROUP BYグループの最初の行を選択しますか?
タイトルが示すように、でグループ化された各行セットの最初の行を選択したいと思いますGROUP BY。 具体的には、purchases次のようなテーブルがある場合: SELECT * FROM purchases; 私の出力: id | お客様| 合計 --- + ---------- + ------ 1 | ジョー| 5 2 | サリー| 3 3 | ジョー| 2 4 | サリー| 1 それぞれが行っidた最大の購入(total)について問い合わせたいのcustomerですが。このようなもの: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; 期待される出力: FIRST(id)| お客様| …

27
各グループの最後のレコードを取得する-MySQL
messages以下に示すようなデータを含むテーブルがあります。 Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1 クエリを実行するselect * from messages group by nameと、結果は次のようになります。 1 A A_data_1 4 B B_data_1 6 C C_data_1 どのクエリが次の結果を返しますか? 3 A A_data_3 5 B B_data_2 6 C C_data_1 つまり、各グループの最後のレコードが返されます。 …


30
列の最大値を持つ行をフェッチします
テーブル: UserId, Value, Date. UserId、各UserIdのmax(Date)の値を取得したい。つまり、最新の日付を持つ各UserIdの値です。これをSQLで簡単に行う方法はありますか?(できればOracle) 更新:あいまいさをお詫びします:すべてのユーザーIDを取得する必要があります。ただし、各UserIdについては、そのユーザーが最新の日付を持っている行のみ。



9
SQL結合:1対多の関係で最後のレコードを選択する
顧客の表と購入の表があるとします。各購入は1人の顧客に属します。1つのSELECTステートメントで、すべての顧客のリストと最後の購入を取得したいと考えています。ベストプラクティスは何ですか?インデックスの構築に関するアドバイスはありますか? 回答ではこれらのテーブル/列名を使用してください: 顧客:ID、名前 購入:id、customer_id、item_id、date さらに複雑な状況では、最後の購入を顧客テーブルに入れてデータベースを非正規化することは(パフォーマンスの観点から)有益でしょうか? (購入)IDが日付順にソートされることが保証されている場合、ステートメントを簡素化できLIMIT 1ますか?

24
MySQLのROW_NUMBER()
MySQLにSQL Server関数を複製する良い方法はありますROW_NUMBER()か? 例えば: SELECT col1, col2, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow FROM Table1 次に、たとえば、条件intRowを1に制限してcol3、各(col1, col2)ペアの最高の単一行を取得できます。


18
グループ化されたSQL結果の各グループの最大値を持つレコードを取得する
グループ化された各セットの最大値を含む行を取得するにはどうすればよいですか? 私はこの質問について過度に複雑なバリエーションを見てきましたが、どれも良い答えはありません。私は可能な限り簡単な例をまとめようとしました: 以下のようなテーブルにperson、group、ageの列がある場合、どのようにして各グループの最も古い人を取得できますか?(グループ内のネクタイは最初のアルファベット順の結果を与える必要があります) Person | Group | Age --- Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 望ましい結果セット: Shawn | 1 | 42 Laura | 2 | 39

22
各ユーザーの最新の記録日をSQLでクエリする方法
ユーザーがいつログオンしたかに関するコレクションエントリであるテーブルがあります。 username, date, value -------------------------- brad, 1/2/2010, 1.1 fred, 1/3/2010, 1.0 bob, 8/4/2009, 1.5 brad, 2/2/2010, 1.2 fred, 12/2/2009, 1.3 etc.. 各ユーザーの最新の日付を取得するクエリを作成するにはどうすればよいですか? 更新:最新の日付と一致する値が必要であることを忘れていました。

14
各カテゴリの上位10件のレコードを選択します
1つのクエリで各セクションの上位10件のレコードを返したい。誰でもそれを行う方法を手伝ってくれる?セクションは、テーブルの列の1つです。 データベースはSQL Server 2005です。入力した日付で上位10件を返したいのですが。セクションは、ビジネス、ローカル、特集です。特定の日付について、上位(10)のビジネス行(最新のエントリ)、上位(10)のローカル行、および上位(10)の機能のみが必要です。

3
パンダは各グループ内で上位n件のレコードを取得します
次のようなパンダDataFrameがあるとします。 >>> df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4],'value':[1,2,3,1,2,3,4,1,1]}) >>> df id value 0 1 1 1 1 2 2 1 3 3 2 1 4 2 2 5 2 3 6 2 4 7 3 1 8 4 1 次のように、各IDの上位2レコードを含む新しいDataFrameを取得します。 id value 0 1 1 1 1 2 3 2 1 4 2 …

10
グループ化された結果の各グループの上位nレコードを取得する
次の例は最も単純な例ですが、どのようなソリューションでもn個の上位結果が必要な場合にスケーリングできるはずです。 以下のようなテーブルにperson、group、ageの列がある場合、各グループで最も年長の2人をどのように取得しますか?(グループ内のタイはより多くの結果をもたらすべきではありませんが、アルファベット順で最初の2つを与えます) + -------- + ------- + ----- + | 人| グループ| 年齢| + -------- + ------- + ----- + | ボブ| 1 | 32 | | ジル| 1 | 34 | | ショーン| 1 | 42 | | ジェイク| 2 | 29 | | ポール| 2 | 36 | …

11
ユーザーごとの最新の日付の行を選択
ユーザーのチェックインとチェックアウトの時間のテーブル( "lms_attendance")は次のようになります。 id user time io (enum) 1 9 1370931202 out 2 9 1370931664 out 3 6 1370932128 out 4 12 1370932128 out 5 12 1370933037 in ユーザーIDごとに最新のレコードのみを出力するこのテーブルのビューを作成しようとしていますが、 "in"または "out"の値を提供しているため、次のようになります。 id user time io 2 9 1370931664 out 3 6 1370932128 out 5 12 1370933037 in 私はこれまでかなり近いですが、ビューはサブクエリを受け付けないことに気づきました。私が得た最も近いクエリは: select `lms_attendance`.`id` AS …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.