ホームページ > データベース > mysql チュートリアル > Access SQLでユーザーグループごとに最近の上位3レコードを取得する方法は?

Access SQLでユーザーグループごとに最近の上位3レコードを取得する方法は?

Susan Sarandon
リリース: 2025-01-07 17:36:38
オリジナル
522 人が閲覧しました

How to Retrieve the Top 3 Recent Records per User Group in Access SQL?

Access SQL でユーザー グループごとに最新の 3 つのレコードを効率的に取得する

データベース管理には、データの特定のサブセットの取得が含まれることがよくあります。 テストスコアの追跡などのシナリオでは、個々のユーザーごとに最新の 3 つのエントリを抽出する必要がある場合があります。このタスクは一見単純に見えますが、最近のレコードの選択とユーザーごとのデータのグループ化を組み合わせる高度な SQL クエリが必要です。

次の SQL クエリは解決策を提供します:

<code class="language-sql">SELECT PR1.LogInID, PR1.Score, PR1.[Date Taken]
FROM Progress AS PR1
WHERE PR1.[Date Taken] IN (
                        SELECT TOP 3 PR2.[Date Taken]
                        FROM Progress PR2
                        WHERE PR2.LoginID = PR1.LoginID
                        ORDER BY PR2.[Date Taken] DESC
                        )
ORDER BY LoginID, [Date Taken] DESC;</code>
ログイン後にコピー

クエリの内訳:

このクエリは、メイン クエリ (外部クエリ) 内のサブクエリ (内部クエリ) を利用して、目的の結果を実現します。

  • サブクエリ: このネストされたクエリは、一意の LoginID ごとに、最新の 3 つの「撮影日」値を識別します。これは次のようにして行われます:

    • 上位 3 つの [Date Taken] 値を選択します。
    • Progress テーブル (PR2) をフィルタリングして、外部クエリ (LoginID) の PR1.LoginID に一致するレコードのみを含めます。
    • 最新の日付が優先されるように、[Date Taken] によって結果を降順に並べます。
  • メイン クエリ: 次に、メイン クエリは、Progress 演算子を使用して PR1 テーブル (IN) をフィルターします。 この演算子は、サブクエリの結果セットに [Date Taken] 値が存在するレコード (つまり、そのユーザーの最新 3 つの日付) のみが含まれるようにします。最後に、読みやすくするために、結果は LoginID の順に並べられ、次に [Date Taken] (降順) の順に並べられます。

このアプローチは、各ユーザーの最新の 3 つのスコアを効率的に取得し、[Date Taken] フィールド内の潜在的な同点を効果的に処理します。 サブクエリと IN 演算子を組み合わせて使用​​すると、このデータベースの一般的な課題に対する簡潔かつ強力なソリューションが提供されます。

以上がAccess SQLでユーザーグループごとに最近の上位3レコードを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート