1
전에 SUM (a * b)을 본 적이 없습니다. 나는 누군가가 나에게 의도 된 행동을 말할 수 있기를 바라고, 그것이 SQL 표준의 일부인지 또는 MySQL이 단지 구현할 수있는 어떤 것이라는 것을 알고있다. 예는 :SUM (a * b)의 기능은 무엇입니까?
localhost test> CREATE TABLE numbers (id int not null primary key auto_increment, a int, b int);
Query OK, 0 rows affected (0.03 sec)
localhost test> INSERT INTO numbers (a,b) VALUES (1, 2), (3,4),(1,1),(5,6);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
localhost test> select * FROM numbers GROUP BY id;
+----+------+------+
| id | a | b |
+----+------+------+
| 1 | 1 | 2 |
| 2 | 3 | 4 |
| 3 | 1 | 1 |
| 4 | 5 | 6 |
+----+------+------+
4 rows in set (0.00 sec)
localhost test> select SUM(a), SUM(b) FROM numbers GROUP BY id;
+--------+--------+
| SUM(a) | SUM(b) |
+--------+--------+
| 1 | 2 |
| 3 | 4 |
| 1 | 1 |
| 5 | 6 |
+--------+--------+
4 rows in set (0.00 sec)
localhost test> select SUM(a*b), SUM(a), SUM(b) FROM numbers GROUP BY id;
+----------+--------+--------+
| SUM(a*b) | SUM(a) | SUM(b) |
+----------+--------+--------+
| 2 | 1 | 2 |
| 12 | 3 | 4 |
| 1 | 1 | 1 |
| 30 | 5 | 6 |
+----------+--------+--------+
4 rows in set (0.00 sec)
localhost test> alter table numbers add col2 int not null;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
localhost test> update numbers set col2 = id %2;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 4 Changed: 2 Warnings: 0
localhost test> select col2, SUM(a*b), SUM(a), SUM(b) FROM numbers GROUP BY col2;
+------+----------+--------+--------+
| col2 | SUM(a*b) | SUM(a) | SUM(b) |
+------+----------+--------+--------+
| 0 | 42 | 8 | 10 |
| 1 | 3 | 2 | 3 |
+------+----------+--------+--------+
2 rows in set (0.01 sec)
내가 마지막 행에서 80와 30를 예상 한 것 또는 오류가 하나 개의 행을 따기의 MySQL의의 표준이 아닌 동작을 사용하면 생산 (나는 SQL_MODE =이 ONLY_FULL_GROUP_BY 활성화).
굉장합니다. 감사합니다! –