Проблема Python & PostgreSQL с GROUP BY - PullRequest
0 голосов
/ 13 марта 2019

У меня есть некоторые проблемы с функцией view (). Я получил ошибку:

столбец «store.id» должен появляться в предложении GROUP BY или использоваться в совокупной функции

Например:

name    number       quantity
plc        55              1
engine     66              1
plc        55              3

ВЫВОД:

name    number       quantity
plc        55              4
engine     66              1

Ответы [ 3 ]

2 голосов
/ 13 марта 2019

Я представляю, что вы ищете что-то вроде этого:

SELECT
  name,
  producent,
  model,
  number,
  SUM(quantity),
  warehouse,
  location
FROM store
WHERE
  quantity > 0
GROUP BY
  name,
  producent,
  model,
  number,
  warehouse,
  location
ORDER BY
  number;

Я удалил id из выбранных полей, так как вы уже объявляете это как поле UNIQUE (PRIMARY KEY) в операторе CREATE TABLE ранее (потому что оно автоматически инкрементируется последовательностью, которую вы объявляете). Вы никогда не хотите группировать по полю UNIQUE - оно даст вам те же результаты, что и без него.

Но чтобы быть уверенным, нам нужно знать, как вы хотите, чтобы ваш вывод выглядел.

Практическое правило при группировании результатов с SQL таково: всегда включайте все поля, выбранные вне агрегатной функции, в предложение GROUP BY.

Обновление

Вы отредактировали свой вопрос, поэтому исходный запрос, который вы включили, пропал. Но похоже, что вы включили результаты, которые вы хотите вместо этого. Вот как вы их получите:

SELECT
  name,
  number,
  SUM(quantity) as "quantity"
FROM store
WHERE
  quantity > 0
GROUP BY
  name,
  number
ORDER BY
  number;

Я надеюсь, что вы можете принять такой ответ.

0 голосов
/ 13 марта 2019

По умолчанию столбцы в select ожидаются в выражении group by.Вы можете включить все столбцы в select также в группу, как указано выше.Я также вижу альтернативу, где sub query может использоваться, чтобы избежать включения всех столбцов в группу по.Пожалуйста, обратитесь по этой ссылке - предыдущий ответ для связанной проблемы

0 голосов
/ 13 марта 2019

измените свой запрос, как показано ниже

SELECT  name,  number,
 SUM(quantity) FROM store WHERE quantity>0 
 GROUP BY name,  number  ORDER BY number

Вы должны поместить неагрегированный выбранный столбец в group by также

...