новичок вопрос. У меня есть эта таблица А:Можно ли использовать (разбитый?) GROUP BY для расчета процентов?
theDate | concept | datum
DATE | VARCHAR | FLOAT
----------------------------------
2000-01-01 | Concept A | 19
2000-01-01 | Concept B | 10
2000-01-01 | Concept C | 0
2001-01-01 | Concept A | 30
2001-01-01 | Concept B | 15
2001-01-01 | Concept C | 0
Мне нужно вычислить процент:
theDate | concept | percentage
DATE | VARCHAR | FLOAT
----------------------------------
2000-01-01 | Concept A | 65.51724138
2000-01-01 | Concept B | 34.48275862
2000-01-01 | Concept C | 0
2001-01-01 | Concept A | 66.66666667
2001-01-01 | Concept B | 33.33333333
2001-01-01 | Concept C | 0
Безопасно ли использовать один GROUP BY, без подзапроса или автообъединение? Как это:
SELECT theDate, concept, datum * 100/sum(datum) percentage
FROM A
GROUP BY theDate
Примечание: Я рассмотрел этот вопрос Calculate percentage in SQL, но я чувствую, что это не отвечает на мои.
Я полагаю, вы используете MySQL? Большинство других СУБД сообщали бы об ошибке здесь и требовали, чтобы вы включили 'concept, (datum * 100)' в 'GROUP BY' тоже. –
@MichaelBerkowski Не моя СУБД. Это дает правильный результат в этом примере игрушек, но я боюсь использовать его для производства с помощью Real Data :-) –
Работая только с одной таблицей и не присоединяясь, _and_ неизменяемые значения 'concept', это будет нормально без полного 'GROUP BY'. Но если значение 'concept' изменяется в группе' theDate', RDBMS может сообщать о непоследовательных и неопределенных результатах для этого столбца. Пожалуйста, пометьте вопрос с помощью соответствующих RDBMS –