ホームページ > データベース > mysql チュートリアル > SQL でゼロ以外のチェック値を持つ最大日付行を効率的に選択する方法

SQL でゼロ以外のチェック値を持つ最大日付行を効率的に選択する方法

Susan Sarandon
リリース: 2025-01-08 13:36:42
オリジナル
200 人が閲覧しました

How to Efficiently Select Max Date Rows with Non-Zero Check Values in SQL?

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 サイトの他の関連記事を参照してください。

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