powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как бороться с group by ?
4 сообщений из 4, страница 1 из 1
Как бороться с group by ?
    #33256941
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в таблице t1 3 числовых поля
p1
p2
p3
делаю
select p1,(case when p2=1 then 1 else 0 end ) as t,sum(p3) from t1 group by p1

error
колонка "p2" должна фигурировать в выражении GROUP BY или использоваться в агрегатной функции

Но мне надо суммировать тока по p1.
Для строковых полей я применяю в полобных случаях функцию max(), но что делать для числовых полей ?
Или вообще надо делать по-другому ?
Подскажите.
Спасибо.
...
Рейтинг: 0 / 0
Как бороться с group by ?
    #33257376
9876
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
select p1, (case when p2= 1  then  1  else  0  end ) as t, sum(p3) 
  from t1 
 group by p1, case when p2= 1  then  1  else  0  end
...
Рейтинг: 0 / 0
Как бороться с group by ?
    #33257721
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не понял
Разве так можно в Select ?
...
Рейтинг: 0 / 0
Как бороться с group by ?
    #33258433
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perederiyв таблице t1 3 числовых поля
p1
p2
p3
делаю
select p1,(case when p2=1 then 1 else 0 end ) as t,sum(p3) from t1 group by p1

error
колонка "p2" должна фигурировать в выражении GROUP BY или использоваться в агрегатной функции


Ок. Попробуем подумать.
Пусть есть таблица t:
f1, f2
-------
1,10
1,10
1,10
2,20
2,20

Делаем
Код: plaintext
1.
2.
SELECT f1, sum(f2)
FROM t
GROUP BY f1
Получим
1,30
2,40

Далее.
Пусть есть таблица t2:
f1, f2, f3
-------
1, 1, 10
1, 1, 10
1, 2, 10
2, 3, 20
2, 4, 20
Делаем как ты хочешь
Код: plaintext
1.
2.
SELECT f1, f2, sum(f2)
FROM t
GROUP BY f1
Получаем, как ты хочешь:
1, x, 30
2, y, 40

Внимание вопрос: что должно стоять на месте x? 1 или 2?
А что должно стоять на месте y? 3 или 4?

Поэтому фраза "Но мне надо суммировать тока по p1" не имеет смысла.

Пользуйся или способом 9876,
или указав номера полей в группировке:
Код: plaintext
1.
2.
SELECT f1, f2, sum(f2)
FROM t
GROUP BY  1 ,  2 
так тоже можно
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как бороться с group by ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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