MySQL 에서 sum 함수 가 사용 하 는 인 스 턴 스 튜 토리 얼
5205 단어 mysqlsum화 해 를 구하 다
오늘 MySQL 의 sum 함 수 를 공유 합 니 다.이 함 수 는 이미 여러분 이 MySQL 데이터 베 이 스 를 조작 할 때 자주 사용 하 는 함수 가 되 었 습 니 다.이 함수 통 계 는 조건 줄 에서 지정 한 열 을 만족 시 키 는 것 과 모두 가 알 고 있 을 것 입 니 다.그 자체 가 할 말 이 없습니다.이 글 은 주로 몇 가지 작은 사례 를 통 해 이 함 수 를 깊이 이해 하고 MySQL 조 회 를 할 때 sum 함 수 를 어떻게 사용 하 는 지 최적화 하 는 것 입 니 다.
문법 분석
SUM([DISTINCT] expr) [over_clause]
expr 표현 식 의 합 을 되 돌려 줍 니 다.줄 수 를 되 돌려 주지 않 으 면 NULL 로 돌아 갑 니 다.여기 DISTINCT 는 표현 식 expr 의 중복 값 을 제거 하기 위해 서 입 니 다
이 함 수 를 사용 할 때,우 리 는 이 함수 가 어떻게 표현 식 의 합 을 통계 하 는 지 생각해 봐 야 한다.아마도 어떤 프로그래머 들 은 이 함수 가 조건 중의 모든 줄 의 총 계 를 직접 통계 해 야 한다 고 생각 할 것 이다.이렇게 이해 하 는 것 도 사실 틀림없다.단지 표현 이 정확 하지 않 거나 운행 원 리 를 진실 하 게 이해 하지 못 할 뿐이다.
실제로 이 함 수 는 일치 하 는 줄 의 값 에 따라 하나 하 나 를 누적 한 것 이다.여기 서 예 를 들 어 하나의 주문서 에서 조건 을 만족 시 키 는 데 10 줄 의 데이터 가 있 습 니 다.우 리 는 주문서 의 총 가격 을 통계 해 야 합 니 다.sum 의 초기 값 은 0 입 니 다.첫 줄 에 맞 을 때 주문 가격 은 10 입 니 다.이때 sum 은 10 이 되 고 두 번 째 줄 에 맞 으 며 주문 가격 은 20 입 니 다.이때 sum 은 30 입 니 다.세 번 째 줄 의 주문 가격 은 50 이 고 이때 sum 은 80 입 니 다.이런 방식 에 따라 순서대로 누적 하 다.
행수
주문 가격
sum 값
첫 줄
10.00
10.00
두 번 째 줄
20.00
30.00
셋째 줄
30.00
60.00
네 번 째 줄
40.00
100.00
다섯 째 줄
50.00
150.00
제..행
...
...
열 째 줄
100.00
550.00
실례 시범
다음 표(Delivery)가 있다 고 가정 하면 표 구 조 는 다음 과 같다.
+-----------------------------+---------+
| Column Name | Type |
+-----------------------------+---------+
| delivery_id | int |
| customer_id | int |
| order_date | date |
| customer_pref_delivery_date | date |
| order_money | decimal |
+-----------------------------+---------+
delivery_id 는 시계의 메 인 키 입 니 다.이 시 계 는 고객 의 음식 배 송 정 보 를 저장 하고 고객 이 특정한 날짜 에 주문 을 했 고 원 하 는 배 송 날짜(주문 날짜 와 같 거나 그 후에)를 지정 했다.만약 에 고객 이 원 하 는 배 송 날짜 가 주문 날짜 와 같다 면 이 주문 서 는'즉시 주문'이 라 고 부 르 고 그렇지 않 으 면'계획 주문'이 라 고 부른다.
안에 다음 과 같은 데이터 가 있 습 니 다.
+-------------+-------------+------------+-----------------------------+-------------+
| delivery_id | customer_id | order_date | customer_pref_delivery_date | order_money |
+-------------+-------------+------------+-----------------------------+-------------+
| 1 | 1 | 2019-08-01 | 2019-08-02 | 1.23 |
| 2 | 5 | 2019-08-02 | 2019-08-02 | 1.01 |
| 3 | 1 | 2019-08-11 | 2019-08-11 | 1.09 |
| 4 | 3 | 2019-08-24 | 2019-08-26 | 1.00 |
| 5 | 4 | 2019-08-21 | 2019-08-22 | 10.00 |
| 6 | 2 | 2019-08-11 | 2019-08-13 | 12.09 |
+-------------+-------------+------------+-----------------------------+-------------+
실례 1이 표 의 모든 주문 총 금액 을 통계 해 내다.여 기 는 매우 간단 합 니 다.또한 우리 가 자주 사용 하 는 방식 이기 도 합 니 다.sum()매개 변 수 는 특정한 열 을 작성 하면 됩 니 다.위의 문법 규칙 에 따 르 면 하나의 표현 식 이 어야 하 며,실제로 한 열 도 하나의 표현 식 이다.
select sum(order_money) from Delivery;
실례 2SQL 조회 문 구 를 써 서 실시 간 주문 이 차지 하 는 백분율 을 얻 고 두 개의 소 수 를 유지 합 니 다.이것 은 아마 조금 어 려 울 것 이다.왜냐하면 너 는 이 문법 을 거의 사용 하지 않 기 때문이다.만약 에 네가 사용 해 보면 매우 간단 하 다 는 것 을 알 게 될 것 이다.
우선 어떤 유형의 비례 를 조회 하 는 것 이 니 통계 총화 가 필요 하 다 는 것 을 이해 해 야 한다.우 리 는 각각 주문 총계 와 sum 1 을 통계 한 다음 에 실시 간 주문 총계 와 sum 1 을 통계 한 다음 에 실시 간 주문 총계 와 sum 1 을 통계 한 다음 에 실시 간 주문 총계 와 sum 2 를 통계 할 수 있다.그리고 다시 만 나 면 돼.하지만 여기 에는 SQL 문 구 를 명확 하 게 요구 합 니 다.그럼 어떻게 해결 해 야 하나 요?
여기 서 sum 의 운행 원 리 를 깊이 이해 해 야 합 니 다.우 리 는 우리 가 한 줄 한 줄 데 이 터 를 읽 고 sum 한 줄 한 줄 을 누적 하면 sum 2 의 종합 을 얻 을 수 있 지 않 습 니까?sum 2 의 종합 까지?sum 2 의 종합 까지?sum 1 에 대해 서 는 통계 가 좋 을 것 이 고 바로 표 중 행 수의 종합 이다.
문제 풀이 방법 1:
select round (
sum(case when order_date = customer_pref_delivery_date then 1 else 0 end) /
count(*) * 100,
2
) as immediate_percentage
from Delivery
문제 풀이 방식 2:
select round (
sum(order_date = customer_pref_delivery_date) /
count(*) * 100,
2
) as immediate_percentage
from Delivery
여기 서 sum 표현 식 이 조건 을 만족 시 키 면 1 을 되 돌려 줍 니 다.만 족 스 러 운 한 줄 의 데 이 터 를 읽 을 때마다 sum 은 1 을 추가 하고 마지막 에 데 이 터 를 읽 으 면 sum 도 추 가 됩 니 다.그래서 조건 을 충족 시 키 는 총 항목 이 나 왔 다.제목 출처
제목 을 바 꾸 는 것 은 LeetCode 에서 나온다.
출처:스냅 백(LeetCode)
링크:leetcode-cn.com/problems/im..
또 하나의 좋 은 예 가 있 으 니 잘 읽 어 보 는 것 을 추천 합 니 다.이 함수 의 사용 장면 을 심화 시 킵 니 다.
https://www.jb51.net/article/207813.htm
총결산
MySQL 에서 sum 함수 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.MySQL sum 함수 사용 에 관 한 더 많은 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.