Учитывая приведенный ниже код SQL:
create table A(a integer, b integer, c double);
insert into A(a, b, c)
values
(0, 0, 1.1),(1, 0, 1.2),(2, 0, 1.3),
(0, 1, 1.4),(1, 1, 1.5),(2, 1, 1.6),
(0, 2, 1.7),(1, 2, 1.8),(2, 2, 1.9),
(0, 0, 1.9),(1, 0, 1.8),(2, 0, 1.7),
(0, 1, 1.6),(1, 1, 1.5),(2, 1, 1.4),
(0, 2, 1.3),(1, 2, 1.2),(2, 2, 1.1)
mysql> select * from A where a = 0;
+------+------+------+
| a | b | c |
+------+------+------+
| 0 | 0 | 1.1 |
| 0 | 1 | 1.4 |
| 0 | 2 | 1.7 |
| 0 | 0 | 1.9 |
| 0 | 1 | 1.6 |
| 0 | 2 | 1.3 |
+------+------+------+
mysql> select * from A where a = 0 group by b;
+------+------+------+
| a | b | c |
+------+------+------+
| 0 | 0 | 1.1 |
| 0 | 1 | 1.4 |
| 0 | 2 | 1.7 |
+------+------+------+
3 rows in set (0.00 sec)
Почему 3 ряда? Я бы подумал, что оба запроса должны возвращать один и тот же результат, поскольку существуют уникальные комбинации c.
Далее
mysql> select *, sum(c) from A group by b;
+------+------+------+--------+
| a | b | c | sum(c) |
+------+------+------+--------+
| 0 | 0 | 1.1 | 9 |
| 0 | 1 | 1.4 | 9 |
| 0 | 2 | 1.7 | 9 |
+------+------+------+--------+
3 rows in set (0.00 sec)
сумма представляется суммой всех строк, а не суммой группировок
Есть идеи, почему я вижу это странное поведение?