Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Еще раз про итоги

56K
21 января 2010 года
ovit
2 / / 21.01.2010
Вопрос такой (если шибко дилетантский - не обессудьте!):

Есть ли возможность сформировать запрос, позволяющий вывести долю каждой строки от общего итога? Напр. чтобы получилось:
Иванов | 10 р. | 20%
Петров | 15р. | 30%
Сидоров | 25 р. | 50%

База в firebird 2.1. Запрос для создания отчета в FastReport.Net
253
21 января 2010 года
Proger_XP
1.5K / / 07.08.2004
Я не эксперт в SQL, но по-моему это можно сделать через GROUP BY. Что-то вроде такого:
 
Код:
SELECT name, score, score / total * 100 FROM table GROUP BY name

total можно посчитать до этого и сохранить в переменной (SET ... SELECT SUM ...).
56K
21 января 2010 года
ovit
2 / / 21.01.2010
Proger_XP

Я вот тоже не эксперт.. - ученичек.
А в примере total - это функция или поле? Если поле - то ведь его сначала вычислить надо?
11
21 января 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: ovit
Proger_XP

Я вот тоже не эксперт.. - ученичек.
А в примере total - это функция или поле? Если поле - то ведь его сначала вычислить надо?


поставь вместо total вложенный запрос

 
Код:
SELECT SUM(...) AS total
385
22 января 2010 года
SomewherSomehow
477 / / 25.07.2004
Цитата: oxotnik333
поставь вместо total вложенный запрос
 
Код:
SELECT SUM(...) AS total



Только советую сначала убедиться в том, что, либо записей не много и никогда не будет много, либо что оптимизатор субд сумеет построить план запроса таким образом, чтобы не вычислять подзапрос для каждой строки - иначе будет работать дольше чем если посчитать сумму один раз и запихнуть в переменную, как посоветовал Proger_XP.

Кстати если нужно посчитать вклад в общее именно для каждой строки, а не для имени - group by не надо использовать - будет логическая ошибка, так же если имена уникальны в каждой строчке - нет необходимости использовать group by, ошибки не будет, но будет доп.нагрузка на сервер.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог