Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2010, 18:29   #1
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию суммирование определенных строк

Добрый день
Допустим есть запрос:
SELECT id, formula FROM table

мне необходимо:
Если строк в выборке <= 2 то выводим просто значение поля formula первой строки, если > 2 то необходимо вернуть сумму поля формула начиная со второй строки.
например
id formula
1 400
1 300
В данном случае необходимо получить 1 400

id formula
1 400
1 200
1 190
В данном случае необходимо получить 1 390

Formula первой строки всегда будет больше остальных
Для первой строки можно использовать что то вроде
Цитата:
case when count(id) <= 2 then max(formula)...

Вот думаю такой вариант пойдет:
Цитата:
select id1,
case when count(id1) <= 2 then max(formula) else sum(formula) - max(formula)
end formula
from table
group by id1
Никому не поставить нас на колени! Мы лежали и будем лежать!

Последний раз редактировалось Rekky; 29.07.2010 в 18:54.
Rekky вне форума Ответить с цитированием
Старый 29.07.2010, 20:39   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

если смотреть на задачу в первичной постановке, то возникает вопрос - на каком основании понимается первая строка? признака сортировки нет

ну и ваше решение привязывается к данным - раз
а второе - для всех айди одного типа (первый тип - строк до 3, второй тип - строк больше 2) числа будут одинаковы
здесь нужно использовать партишн по айди и соответственно sum() over() и max() over()
soleil@mmc вне форума Ответить с цитированием
Старый 30.07.2010, 09:24   #3
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Цитата:
если смотреть на задачу в первичной постановке, то возникает вопрос - на каком основании понимается первая строка? признака сортировки нет
Да в данном случае нет, я упрощаю задачу, когда выкладываю здесь.
Партишн мне не нужен, мне нужно возвращение одной строки для каждого id. они могут повторятся и различатся.
например:
id formula
1 200
1 100
1 150
2 500
2 300
3 490
3 400
3 90
3 10
Эти данные уже отсортированы и упорядочены как надо.
В результате должно получится:
1 250
2 500
3 500

А вобще, я не совсем поняла замечание
Цитата:
а второе - для всех айди одного типа (первый тип - строк до 3, второй тип - строк больше 2) числа будут одинаковы
Мне впринципе и нужно одинаково и одной строкой: либо сумму всех полей кроме первого, либо первое значение. Может быть я не понятно высказала свою задачу
Никому не поставить нас на колени! Мы лежали и будем лежать!

Последний раз редактировалось Rekky; 30.07.2010 в 09:29.
Rekky вне форума Ответить с цитированием
Старый 30.07.2010, 10:59   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

интересно узнать признак сортировки
Цитата:
id formula
1 200
1 100
1 150
если у вас все работает, то это замечательно и можете не обращать на мое брюзжание
soleil@mmc вне форума Ответить с цитированием
Старый 30.07.2010, 11:14   #5
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

эти два поля выбираются из большущего запроса. там идет сортировка сначала по id, а потом по дате.Точнее в данном примере который вы процитировали...должны быть еще поля, включая дату и тп..просто я не стала указывать. первая строка это общий случай получается. на самую раннюю дату выйдет самая большая сумма. первая строка считается по особому алгоритму.
Никому не поставить нас на колени! Мы лежали и будем лежать!

Последний раз редактировалось Rekky; 30.07.2010 в 11:19.
Rekky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование строк в Access Shtirlic2009 Microsoft Office Access 13 21.09.2015 00:46
макрос для перемещения определенных строк вверх MrGB Microsoft Office Excel 2 11.07.2010 20:04
Суммирование определенных ячеек при переносе Pilot Microsoft Office Excel 5 17.07.2008 12:46
суммирование данных из чётных и нечётных строк (отдельно!) zetrix Microsoft Office Excel 0 30.10.2006 19:49