sqlテーブルからゼロ以外のチェック値で最新のエントリを抽出します
このガイドは、各グループの最新のレコードを効率的に取得する方法を示しており、ゼロ以外のチェック額をフィルタリングしています。 このような構造化されたテーブルを想定しましょう:
group date cash checks
1 1/1/2013 0 0
2 1/1/2013 0 800
1 1/3/2013 0 700
3 1/1/2013 0 600
1 1/2/2013 0 400
3 1/5/2013 0 200
次のSQLアプローチがこれを達成します:
最初に、チェック
値がゼロよりも大きい各グループの最大日付が見つかります:
SELECT group, MAX(date) AS max_date
FROM table
WHERE checks > 0
GROUP BY group;
これは得られます:
group max_date
2 1/1/2013
1 1/3/2013
3 1/5/2013
次に、この結果を元のテーブルに戻して、対応するチェックを取得します
量:
SELECT t.group, t.date AS max_date, t.checks
FROM table t
INNER JOIN (
SELECT group, MAX(date) AS max_date
FROM table
WHERE checks > 0
GROUP BY group
) AS a ON a.group = t.group AND a.max_date = t.date;
この最終クエリは、目的の出力を生成します:
group max_date checks
2 1/1/2013 800
1 1/3/2013 700
3 1/5/2013 200
重要な注意:予約単語( date
など)を列名として使用しています。 SQL構文エラーにつながり、コードを維持しにくくすることができます。 あなたの列のより記述的で明確な名前を考慮してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3