집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 SUM() 함수를 사용하여 이전 값의 합계를 기반으로 행을 검색하는 방법은 무엇입니까?
행 검색을 위한 WHERE 절에서 MySQL SUM() 함수 사용
MySQL을 사용하면 하위 쿼리 내에서 집계 계산을 수행하고 이를 기준으로 사용할 수 있습니다. WHERE 절에서 행 선택 그러나 이 맥락에서 집계 함수 사용의 제한 사항을 이해하는 것이 중요합니다.
다음 시나리오를 고려하십시오. id와 cash 열이 있는 테이블이 있고 합계가 있는 첫 번째 행을 검색하려고 합니다. 이전의 모든 현금 가치 중 특정 기준액을 초과합니다.
표 예:
id | cash |
---|---|
1 | 200 |
2 | 301 |
3 | 101 |
4 | 700 |
원하는 결과:
For 입력 임계값이 500이면 행 1과 2의 현금 가치 합계(200 301 = 501)가 임계값을 초과하므로 예상 결과는 행 3입니다.
잘못된 접근 방식:
WHERE SUM(현금) 사용 시도 중 > 500은 WHERE 절에서 집계를 직접 비교할 수 없기 때문에 올바른 결과를 산출하지 않습니다.
해결책:
이 제한을 극복하려면 다음에서 HAVING 절을 사용할 수 있습니다. 하위 쿼리와 결합하여 각 행의 현금 누계를 계산합니다.
<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>
설명:
이 접근 방식을 사용하면 이전의 모든 현금 가치 합계가 임계값을 초과하는 첫 번째 행을 정확하게 식별할 수 있습니다. .
위 내용은 MySQL의 SUM() 함수를 사용하여 이전 값의 합계를 기반으로 행을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!