Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

열을 곱한 다음 고객 이름과 같은 유사한 레코드가 있는 행을 합산하는 방법은 무엇입니까?

<시간/>

이를 이해하기 위해 ID, 고객 이름, 항목, 가격과 같은 필드가 있는 테이블을 생성해 보겠습니다. 먼저 항목에 가격을 곱합니다. 그 후에 유사한 레코드, 즉 동일한 고객 이름이 있는 행이 추가됩니다.

먼저 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
   CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   CustomerName varchar(100),
   CustomerItems int,
   CustomerPrice int
);
Query OK, 0 rows affected (0.54 sec)

다음은 삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하는 쿼리입니다.

mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',3,450);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Mike',2,550);
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',4,1000);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Larry',1,100);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(CustomerName,CustomerItems,CustomerPrice)values('Mike',5,200);
Query OK, 1 row affected (0.71 sec)

다음은 select 명령을 사용하여 테이블의 레코드를 표시하는 쿼리입니다.

mysql> select *from DemoTable;

그러면 다음과 같은 출력이 생성됩니다.

+------------+--------------+---------------+---------------+
| CustomerId | CustomerName | CustomerItems | CustomerPrice |
+------------+--------------+---------------+---------------+
|          1 | Larry        |             3 |           450 |
|          2 | Mike         |             2 |           550 |
|          3 | Larry        |             4 |          1000 |
|          4 | Larry        |             1 |           100 |
|          5 | Mike         |             5 |           200 |
+------------+--------------+---------------+---------------+
5 rows in set (0.00 sec)

다음은 열(항목 * 가격)을 곱한 다음 유사한 레코드가 있는 행을 합하는 쿼리입니다.

mysql> SELECT CustomerName, SUM( CustomerItems* CustomerPrice) AS TOTAL_PRICE FROM DemoTable
GROUP BY CustomerName;

그러면 다음과 같은 출력이 생성됩니다.

+--------------+-------------+
| CustomerName | TOTAL_PRICE |
+--------------+-------------+
| Larry        | 5450        |
| Mike         | 2100        |
+--------------+-------------+
2 rows in set (0.05 sec)