Да, вы можете иметь несколько разделенных запятыми столбцов или выражений в предложении GROUP BY точно так же, как это сделал OP. Чтобы взять пример из документов MySQL :
SELECT id, FLOOR(value/100) AS val
FROM tbl_name
GROUP BY id, val;
Не использовать CONCAT()
вместо принятый ответ предполагает ; это даст вам неверные результаты, так как CONCAT('foo', 'bar', 'baz')
и CONCAT('fo', 'obarb', 'az')
одинаковы.
SQL, отправленный OP, в порядке. Сообщение об ошибке, которое он получал, должно быть вызвано чем-то другим в его запросе, который он удалил перед публикацией здесь; его опубликованный код не генерирует ошибку, которую он говорит, что делает. Вот доказательство:
mysql> CREATE TABLE averagegrade (mjr int, lev int, average int);
Query OK, 0 rows affected (0.12 sec)
mysql> INSERT INTO averagegrade VALUES (5,6,7), (5,6,7), (100, 200, 300);
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>
mysql> -- OP's SQL, copied verbatim:
mysql> CREATE VIEW `uniaverage` AS
-> SELECT `averagegrade`.`mjr`,`averagegrade`.`lev`,
-> AVG(`averagegrade`.`average`) AS `uniAVG`
-> FROM `averagegrade` GROUP BY `averagegrade`.`lev`, `averagegrade`.`mjr`;
Query OK, 0 rows affected (0.03 sec)
mysql>
mysql> SELECT * FROM uniaverage;
+------+------+----------+
| mjr | lev | uniAVG |
+------+------+----------+
| 5 | 6 | 7.0000 |
| 100 | 200 | 300.0000 |
+------+------+----------+
2 rows in set (0.00 sec)