SQL でチェック量がゼロ以外の最大日付行を抽出する
この例では、グループ、日付、金額 (現金と小切手) を含むデータセットから、最新の日付とゼロ以外の小切手値を持つ一意のグループを選択する方法を示します。
このクエリを使用した最初の試みでは不十分であることが判明しました:
<code class="language-sql">SELECT group, MAX(date), checks FROM table WHERE checks > 0 GROUP BY group ORDER BY group DESC</code>
このクエリは、最大の日付を持つ行のデータだけでなく、各グループのすべての日付とチェック値を返しました。
この解決策には 2 段階のアプローチが必要です:
まず、ゼロ以外のチェック値を使用して各グループの最大の日付を特定します。
<code class="language-sql">SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group</code>
次に、この結果セットを元のテーブルに結合して、それらの最大日付行に対応する checks
(およびその他の関連する列) を取得します。
<code class="language-sql">SELECT t.group, a.max_date, t.checks FROM table t INNER JOIN ( SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group ) a ON a.group = t.group AND a.max_date = t.date;</code>
この内部結合により、最大日付とゼロ以外のチェック基準の両方に一致する行のみが最終出力に含まれることが保証されます。
ベスト プラクティス: 列名に説明的な非予約語を使用すると (例: group_id
の代わりに group
)、コードの可読性が向上し、エラーのリスクが軽減されます。
以上がSQL でゼロ以外のチェック値を持つ最大日付行を効率的に選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。