mysql에서 sum() 함수는 일련의 값 또는 표현식의 합계를 계산하는 데 사용됩니다. 구문은 "SUM(DISTINCT 표현식)"입니다. DISTINCT 연산자를 사용하면 집합의 다른 값을 계산할 수 있습니다. . sum() 함수는 SELECT 문과 함께 사용해야 합니다. 일치하는 행을 반환하지 않는 SELECT 문에 SUM() 함수를 사용하면 SUM() 함수는 0 대신 NULL을 반환합니다. 함수는 NULL 값이 있는 행을 계산할 때 열을 무시합니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
mysql sum() 함수
SUM() 함수는 일련의 값 또는 표현식의 합계를 계산하는 데 사용됩니다. SUM() 함수의 구문은 다음과 같습니다.
SUM(DISTINCT expression)
Parameters | Description |
---|---|
expression | 필수입니다. 필드 또는 수식 |
SUM() 함수는 어떻게 작동하나요?
일치하는 행을 반환하지 않는 SELECT 문에서 SUM 함수를 사용하면 SUM 함수는 0 대신 NULL을 반환합니다.
DISTINCT 연산자를 사용하면 집합의 고유한 값을 계산할 수 있습니다.
SUM() 함수는 계산 시 NULL 열 값이 있는 행을 무시합니다.
sum() 함수 사용예
이해를 돕기 위해 먼저 학생 점수 테이블 tb_students_score를 생성합니다. 학생 점수 테이블의 데이터 내용은 다음과 같습니다
mysql> SELECT * FROM tb_students_score;
합을 사용합니다. () 함수는 tb_students_score 테이블
mysql> SELECT SUM(student_score) AS score_sum FROM tb_students_score;
에서 학생 성적의 총점을 계산합니다. 쿼리 결과에서 알 수 있듯이 SUM() 함수는 모든 학생 성적의 합을 942로 반환합니다.
확장 지식:
MySQL SUM with GROUP BY 절
GROUP BY 절과 결합하면 SUM() 함수는 GROUP BY 절에 지정된 각 그룹화에 대한 합계를 계산합니다. 예를 들어 다음과 같이 GROUP BY 절이 포함된 SUM 함수를 사용하여 각 주문의 총 금액을 계산할 수 있습니다.
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) total FROM orderdetails GROUP BY orderNumber ORDER BY SUM(quantityOrdered * priceEach) DESC;
위 쿼리 문을 실행하면 다음 결과를 얻을 수 있습니다.
+-------------+-----------+ | orderNumber | total | +-------------+-----------+ | 10165 | 67,392.85 | | 10287 | 61,402.00 | | 10310 | 61,234.67 | | 10212 | 59,830.55 | *** 此处省略了一大波数据 ***** | 10116 | 1,627.56 | | 10158 | 1,491.38 | | 10144 | 1,128.20 | | 10408 | 615.45 | +-------------+-----------+ 327 rows in set
MySQL SUM with HAVING
SUM 함수의 HAVING 절을 사용하여 특정 조건에 따라 결과를 필터링할 수 있습니다. 예를 들어 총 주문 수량을 계산하고 총 금액이 60,000보다 큰 주문만 선택할 수 있습니다. 다음 쿼리문 -
SELECT orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) FROM orderdetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000 ORDER BY SUM(quantityOrdered * priceEach);
위 쿼리문을 실행하여 다음과 같은 결과를 얻음 -
MySQL SUM 및 LIMIT
에서 가장 비싼 상위 10개 제품의 합계를 계산한다고 가정해 보겠습니다. products 테이블에서 다음 쿼리를 생각해 낼 수 있습니다.
SELECT SUM(buyprice) FROM products ORDER BY buyprice DESC LIMIT 10;
위 쿼리 문을 실행하여 다음 결과를 얻습니다.
SUM 함수가 포함된 SELECT 문은 한 행만 반환하고 LIMIT 절을 반환하므로 작동하지 않습니다. 반환할 행 수에 대한 제약 조건이 잘못되었습니다. 이 문제를 해결하려면 다음 하위 쿼리를 사용하세요.
SELECT FORMAT(SUM(buyprice),2) FROM (SELECT buyprice FROM products ORDER BY buyprice DESC LIMIT 10) price;
위 쿼리 문을 실행하고 다음 결과를 얻습니다. -
위 문은 어떻게 실행되나요? 하위 쿼리는 가장 비싼 상위 10개 제품을 선택합니다. 외부 쿼리는 하위 쿼리에서 반환된 최고 가격 상위 10개 제품의 합계를 계산합니다.
MySQL SUM 대 NULL
일치하는 행이 없으면 SUM 함수는 NULL 값을 반환합니다. 때로는 SUM 함수가 NULL 대신 0을 반환하기를 원할 수도 있습니다. 이 경우 COALESCE 기능을 사용할 수 있습니다. COALESCE 함수는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수가 NULL이면 두 번째 매개변수가 반환되고, 그렇지 않으면 다음 쿼리 문을 참조하세요.
SELECT COALESCE(SUM(quantityOrdered * priceEach),0) FROM orderdetails WHERE productCode = 'S1_212121';
위 쿼리 문을 실행하면 다음 결과가 나옵니다.
【관련 추천: mysql 비디오 튜토리얼】
위 내용은 mysql에서 sum() 함수를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!