MySQL で値の合計がしきい値を超えた最初の行を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-04 01:35:30
オリジナル
932 人が閲覧しました

How to Retrieve the First Row Where the Sum of Values Exceeds a Threshold in MySQL?

MySQL で WHERE SUM() を使用して特定のデータを取得する

MySQL には、カラム内の値の合計を計算するための SUM() 集計関数が用意されています。 SUM() は集計結果を取得するために SELECT クエリでよく使用されますが、特定の制限付きで WHERE 句でも使用できます。

指定されたシナリオの目的は、テーブルの最初の行を取得することです。前の行の現金価値の合計が指定されたしきい値を超えています。 WHERE 句で「WHERE SUM(cash) > 500」を使用すると、このコンテキストでは集計を直接比較できないため、望ましい結果が得られません。

望ましい機能を実現するには、HAVING 句を次の中で使用する必要があります。 GROUP BY 句と組み合わせて使用​​します。ただし、HAVING 句には GROUP BY 句の定義が必要です。したがって、この場合、グループ化は意味がありません。

解決策は、WHERE 句内でネストされたサブクエリを利用することです。このアプローチにより、各行までの現金価値の累計を計算し、その値を比較に使用することができます。次のクエリはこれを実現します。

<code class="sql">SELECT y.id, y.cash
FROM (
  SELECT t.id,
         t.cash,
         (
           SELECT SUM(x.cash)
           FROM TABLE x
           WHERE x.id <= t.id
         ) AS running_total
  FROM TABLE t
  ORDER BY t.id
) y
WHERE y.running_total > 500
ORDER BY y.id
LIMIT 1;</code>
ログイン後にコピー

WHERE 句で列エイリアス「running_total」を参照することにより、累計を指定されたしきい値と比較できます。 LIMIT 句により、条件を満たす最初の行のみが返されるようになります。

以上がMySQL で値の合計がしきい値を超えた最初の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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