результат выбора имен полей из таблицы с группировкой по - PullRequest
0 голосов
/ 30 мая 2020

Допустим, вам дана следующая таблица под названием «Клиенты»:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Hardik   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Ramesh   |  25 | Ahmedabad |  6500.00 |
|  5 | Hardik   |  27 | Delhi     |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Ramesh   |  24 | Ahmedabad | 10000.00 |
+----+----------+-----+-----------+----------+

Многие ресурсы, объясняющие группы по операторам, будут использовать такой пример, как: SELECT NAME, SUM(SALARY) FROM CUSTOMERS GROUP BY NAME; где «выбранная» вещь, кроме Поле, которое «сгруппировано по», является функцией, например, count или sum. Но что произойдет, если вы сделаете что-то вроде SELECT NAME, ADDRESS FROM CUSTOMERS GROUP BY NAME; - как именно адреса будут сгруппированы в одну запись с именем. Я знаю, что могу запустить это и узнать ответ, но я хочу понять общий лог c - если бы кто-нибудь мог помочь, это было бы очень признательно.

ИЗМЕНИТЬ ДРУГОЙ ВОПРОС: В новой таблице выше, если бы я сделал SELECT NAME, ADDRESS, group_concat(salary) FROM CUSTOMERS GROUP BY NAME;, это было бы нормально, учитывая, что адреса одинаковы для каждого имени?

1 Ответ

1 голос
/ 30 мая 2020

Если вы скажете SELECT NAME, ADDRESS FROM CUSTOMERS GROUP BY NAME, вы получите сообщение об ошибке с просьбой добавить функцию агрегирования вокруг столбца ADDRESS. Например, вы можете написать

SELECT NAME, MAX(ADDRESS) FROM CUSTOMERS GROUP BY NAME
...