-- 사용 예제 테이블
CREATE TABLE product_order(
ID INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20),
product VARCHAR(50),
price INT
);
INSERT INTO product_order(name, product, price) VALUES('홍길동', 'TV', 5000);
INSERT INTO product_order(name, product, price) VALUES('홍길동', '라디오', 3000);
INSERT INTO product_order(name, product, price) VALUES('홍길동', '컴퓨터', 2000);
INSERT INTO product_order(name, product, price) VALUES('홍길동', '핸드폰', 10000);
INSERT INTO product_order(name, product, price) VALUES('홍길순', 'TV', 5000);
INSERT INTO product_order(name, product, price) VALUES('홍길순', '라디오', 3000);
INSERT INTO product_order(name, product, price) VALUES('홍길순', '컴퓨터', 2000);
📝SUM
SUM이라는 건 즉 모든 합을 의미하는데요 여기에선 SUM(price)이라는 건 total의 합을 의미합니다.
이럴경우 SELECT SUM(price) FROM product_order 쿼리문을 사용하면 됩니다.
이렇게 전체 손님이 산 물건의 총 값(매출)을 구할 수 있습니다.
SELECT NAME, SUM(price) FROM product_order GROUP BY name;
SELECT SUM(price) FROM product_order;
SUM(price) |
40000 |
📝GROUP BY
그냥 총합도 중요하지만 각각의 손님이 여러번 왔을 때마다 산 물건의 총 합도 구해야겠죠 하지만 위에 방식대로 하면 결과가 1개만 출력됩니다. 거기에서 필요한게 GROUP BY입니다. 묶는다는 의미를 가지고 있습니다.
위에 거를 예시를 들자면 GROUP BY name라고 적혀있는데 name이 같은 사람끼리 GROUP BY(묶는다)라고 이해하시면 되겠습니다. 그래서 중복해서 나오지도 않고 개개인별로 결과값이 차곡차곡 쌓이게 되는 거죠
SELECT NAME, SUM(price) FROM product_order GROUP BY name;
NAME | SUM(price) |
20000 | 20000 |
📝AS
AS란 ~로 대신 불려지는 걸 의미합니다. 즉 별칭입니다.
하기 쿼리 같이 SUM(price)를 total_price으로 별칭을 정할 수 있습니다. 그러면 출력 필드 명이 total_price로 변경됩니다.
SELECT NAME, SUM(price) AS total_price FROM product_order GROUP BY name;
NAME | total_price |
20000 | 20000 |
📝AVG
AVG는 평균을 의미합니다. SUM이라는 작업을 하고 그걸 이제 갯수로 나눈것입니다.
총 레코드 수는 8개이고 총 SUM은 40,000원 입니다. 그 결과 5,000이 나오게 됩니다.
SELECT avg(price) AS avg_price FROM product_order;
avg_price |
5,000.0 |
📝MAX, MIN
MAX는 말 그대로 최대값, MIN은 최솟값을 의미합니다.
SELECT MAX(price) AS max FROM product_order;
SELECT MIN(price) AS min FROM product_order;
max |
10,000 |
min |
2,000 |
📝COUNT
COUNT를 이용해 갯수를 셀 수 있습니다. COUNT(*)의 경우 전체의 갯수를 셉니다.
또한 괄호안에 조건을 넣을 수 있습니다. DISTINCT(NAME)을 이용해 이용한 고객이 몇명인지 파악할 수 있습니다.
SELECT COUNT(DISTINCT(NAME)) AS customer_count FROM product_order;
custom_count |
2 |