powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
5 сообщений из 5, страница 1 из 1
ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
    #38976892
llNORDll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем есть пустяковая задача посчитать сумму count у таблицы для определенной аулиозаписи(id_audiotrack):

Таблица popularity:
id
id_audiotrack
date
count

Написал запрос:
Код: sql
1.
"SELECT SUM(count), * FROM popularity GROUP BY id_audiotrack"



Кидает ерор: колонка "popularity.id" должна фигурировать в предложении GROUP BY или использоваться в агрегатной функции.

Искренне не понимаю в чем дело, причем если выводить только SUM без других полей - все работает....

Нагуглил что-то похожее, но с английским не очень - в суть не вник...( http://stackoverflow.com/questions/1769361/postgresql-group-by-different-from-mysql)
...
Рейтинг: 0 / 0
ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
    #38976939
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llNORDll,

А Вы вообще понимаете как в SQL это работает? Похоже, что нет...
...
Рейтинг: 0 / 0
ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
    #38977506
llNORDll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если бы я все понимал, пришел бы сюда? Очевидно, что вопросы рождаются не в капусте, а именно от незнания и недопонимания, кого-либо или чего-либо, так что ваш вопрос...странен.
...
Рейтинг: 0 / 0
ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
    #38977532
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llNORDll,

sum() и count() суть аггрегирующие функции, т.е. из N записей они делают одну. GROUP BY — аггрегирующее выражение, которое сворачивает N записей в несколько. В группирующем запросе, все поля в SELECT-списке должны быть или в GROUP BY выражении, или же аргументами аггрегирующих функций. В противном случае база не знает что вам вернуть.

Пример:
Код: plaintext
1.
2.
3.
4.
5.
cust_type created_at
RES       2014.01.01
RES       2014.02.01
RES       2014.06.01
BUS       2015.01.01

Мы хотим узнать, сколько клиентов каждого типа? Формируем группы по `cust_type` и считаем:

Код: sql
1.
SELECT cust_type, count(*) FROM tab GROUP BY cust_type;


Вернулось всего 2 записи из 5 т.к. у нас только 2 типа кастомеров.

Если же добавить еще и колонку `created_at`, то возникает вопрос — для типа `RES` какое из 3 значений надо показать (вопрос справедлив и для `BUS` типа, хотя это не так очевидно)?
Отсюда и ошибка которую вы имеете. Почитайте теорию.
...
Рейтинг: 0 / 0
ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
    #38977549
llNORDll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я понял суть, я получается прошу отобразить поле, а он сгруппировал допустим 5 строк и не знает из какой строки отображать поле, да оно в принципе и ненужно, так как это не тот будет результат который нужен.... Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ORDER BY (колонка 111 должна фигурировать в предложении GROUP BY или ...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]