Проблемы с использованием агрегатной функции

#mysql #sql #sql-server

#mysql #sql #sql-сервер

Вопрос:

Я пытаюсь взять отдельные значения и разделить их на их сумму в столбце.

Т.е.

 SELECT (column1 / SUM(column1))
FROM Table a
  

Это работает просто отлично, но когда я включаю другую необходимую информацию…

 SELECT column2
      ,(column1 / SUM(column1)) 
FROM Table a
  

Затем он возвращает значение Column1 недопустимо в списке выбора, поскольку оно не содержится ни в агрегатной функции, ни в предложении GROUP BY .

Затем, если я включу column2 в предложение group by, моя СУММА (column1) просто повторно заполняет предыдущее значение в соответствии со значением column2 …. разрушая цель моей СУММЫ.

Помогите?

Комментарии:

1. Вы используете MySQL или SQL Server?

Ответ №1:

Используйте полный явный подзапрос, чтобы получить сумму столбца 1:

 SELECT column2,
       column1 / (SELECT SUM(column1) FROM Tablea)
FROM Tablea
  

Ответ №2:

Вы можете использовать оконную функцию sum — Sum(column1) over() — дает общую сумму

 SELECT column2, column1/(SUM(column1) OVER()) FROM YourTable