Еще раз про итоги
Есть ли возможность сформировать запрос, позволяющий вывести долю каждой строки от общего итога? Напр. чтобы получилось:
Иванов | 10 р. | 20%
Петров | 15р. | 30%
Сидоров | 25 р. | 50%
База в firebird 2.1. Запрос для создания отчета в FastReport.Net
Код:
SELECT name, score, score / total * 100 FROM table GROUP BY name
total можно посчитать до этого и сохранить в переменной (SET ... SELECT SUM ...).
Я вот тоже не эксперт.. - ученичек.
А в примере total - это функция или поле? Если поле - то ведь его сначала вычислить надо?
Цитата: ovit
Proger_XP
Я вот тоже не эксперт.. - ученичек.
А в примере total - это функция или поле? Если поле - то ведь его сначала вычислить надо?
Я вот тоже не эксперт.. - ученичек.
А в примере total - это функция или поле? Если поле - то ведь его сначала вычислить надо?
поставь вместо total вложенный запрос
Код:
SELECT SUM(...) AS total
Цитата: oxotnik333
поставь вместо total вложенный запрос
Код:
SELECT SUM(...) AS total
Только советую сначала убедиться в том, что, либо записей не много и никогда не будет много, либо что оптимизатор субд сумеет построить план запроса таким образом, чтобы не вычислять подзапрос для каждой строки - иначе будет работать дольше чем если посчитать сумму один раз и запихнуть в переменную, как посоветовал Proger_XP.
Кстати если нужно посчитать вклад в общее именно для каждой строки, а не для имени - group by не надо использовать - будет логическая ошибка, так же если имена уникальны в каждой строчке - нет необходимости использовать group by, ошибки не будет, но будет доп.нагрузка на сервер.