이를 달성하기 위해 GROUP BY 절과 함께 집계 함수 SUM()을 사용할 수 있습니다.
테이블을 만들어 봅시다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> create table SelectPerMonthDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Price int, -> PurchaseDate datetime -> ); Query OK, 0 rows affected (2.34 sec)
예시
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하고 그 중 하나는 구매 날짜가 됩니다. 쿼리는 다음과 같습니다 -
mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(600,date_add(now(), interval -1 month)); Query OK, 1 row affected (0.42 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(600,date_add(now(), interval 2 month)); Query OK, 1 row affected (0.34 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(400,now()); Query OK, 1 row affected (0.20 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(800,date_add(now(), interval 3 month)); Query OK, 1 row affected (0.13 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(900,date_add(now(), interval 4 month)); Query OK, 1 row affected (0.10 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(100,date_add(now(), interval 4 month)); Query OK, 1 row affected (0.22 sec) mysql> insert into SelectPerMonthDemo(Price,PurchaseDate) values(1200,date_add(now(), interval -1 month)); Query OK, 1 row affected (0.09 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> select *from SelectPerMonthDemo;
출력
다음은 제품의 가격과 구매 날짜를 표시하는 출력입니다 -
+----+-------+---------------------+ | Id | Price | PurchaseDate | +----+-------+---------------------+ | 1 | 600 | 2019-01-10 22:39:30 | | 2 | 600 | 2019-04-10 22:39:47 | | 3 | 400 | 2019-02-10 22:40:03 | | 4 | 800 | 2019-05-10 22:40:18 | | 5 | 900 | 2019-06-10 22:40:29 | | 6 | 100 | 2019-06-10 22:40:41 | | 7 | 1200 | 2019-01-10 22:40:50 | +----+-------+---------------------+ 7 rows in set (0.00 sec)
구매일자를 기준으로 월별 기록을 조회하는 쿼리입니다 -
mysql> select monthname(PurchaseDate) as MONTHNAME,sum(Price) from SelectPerMonthDemo -> group by monthname(PurchaseDate);
출력
+-----------+------------+ | MONTHNAME | sum(Price) | +-----------+------------+ | January | 1800 | | April | 600 | | February | 400 | | May | 800 | | June | 1000 | +-----------+------------+ 5 rows in set (0.07 sec)
월 이름(월 번호만)을 원하지 않으면 다음 쿼리를 사용하십시오. -
mysql> select month(PurchaseDate),sum(Price) from SelectPerMonthDemo -> group by month(PurchaseDate);
출력
+---------------------+------------+ | month(PurchaseDate) | sum(Price) | +---------------------+------------+ | 1 | 1800 | | 4 | 600 | | 2 | 400 | | 5 | 800 | | 6 | 1000 | +---------------------+------------+ 5 rows in set (0.00 sec)