#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