), каждый раз, когда вы суммируете или выполняете математические вычисления для столбца, это означает, что он должен быть числовым.
я есть эти результаты:
PersonID SUM(PA.Total)
-------------------------
1 75
2 75
3 15
4 15
5 60
6 60
С таблицей вроде:
PersonID Total
------------------
1 50
2 50
3 10
4 10
5 40
6 40
1 25
2 25
3 5
4 5
5 20
6 20
Они сгруппированы по человеку. Теперь я хочу добавить столбец с процентами для каждого человека, рассчитанными из суммы всех их сумм.
Например: общая сумма равна 300, и, следовательно, мне нужен такой результат:
PersonID SUM(PA.Total) Percentage
--------------------------------------
1 75 25%
2 75 25%
3 15 5%
4 15 5%
5 60 20%
6 60 20%
Я посмотрел на код онлайн, и я придумал исправление, такое как это:
SELECT
P.PersonID, SUM(PA.Total)
SUM(PA.Total) * 100 / [p] AS 'Percentage'
FROM
Person P
JOIN
Package PA ON P.PersonID = PA.PackageFK
CROSS JOIN
(SELECT SUM(PA.[Total]) AS [p]
FROM Package PA) t
GROUP BY
P.PersonID
Но я не уверен, как включить кросс-объединение в объединение, а также в раздел «Группа / сумма». Или это все в порядке?
Любая помощь будет оценена - SQL скрипкаhttp://sqlfiddle.com/#!9/80f91/2