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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2014, 14:55   #1
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию SQL запросы в FireBird2.5

Здравствуйте. Есть такое задание:

Выяснить у каких абонентов с ID 005488,015527,080047 сумма оплат привышает 1000. При этом цчитывать только значения оплат больше 100.

Написал такой вот запрос
Код:
select AccountCD, Sum(PaySum) from PaySumma group by AccountCD having AccountCD in (005488,015527,080047) and Sum(PaySum) > 1000;
Он находит нужный аккаунт, но суммирует все значения. А как сделать так что бы суммировались только значения больше 100.

Заранее спасибо.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.06.2014, 15:15   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
and Sum(PaySum) > 1000;
это откуда спёрли?
eval вне форума Ответить с цитированием
Старый 30.06.2014, 15:20   #3
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Из методички спёр. А что с этим не так?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.06.2014, 15:28   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

а всё с ним не так
что оно делает?
eval вне форума Ответить с цитированием
Старый 30.06.2014, 15:28   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

where (paysum>100) где-то грамотно дописать.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.06.2014, 15:41   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

eval,функция суммирует значения столбца PaySum и сравнивает с 1000.
UtkinВы правы. Путем проб и ошибок была добавлена именно эта конструкция. Всё заработало. Спасибо.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.06.2014, 15:46   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
функция суммирует значения столбца PaySum и сравнивает с 1000.
и что на выходе получаем?
eval вне форума Ответить с цитированием
Старый 30.06.2014, 17:12   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
...
where AccountCD in (005488,015527,080047) and paysum>100 
group by AccountCD
having Sum(PaySum) > 1000
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.06.2014, 19:55   #9
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

А в чем разница между этим запросом
Код:
select AccountCD,Sum(PaySum)from PaySumma where PaySum > 100 group by AccountCD having AccountCD in (005488,015527,080047) and Sum(PaySum) > 1000;
И этим (спасибо Аватару)
Код:
select AccountCD, Sum(PaySum) from PaySumma where AccountCD in (005488,015527,080047) and paysum>100
group by AccountCD
having Sum(PaySum) > 1000*
Результат они выдают один и то же.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 30.06.2014, 20:43   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А в чем разница между этим запросом
В том что сравнение paysum в примере Аватара производится не на уровне группы а на уровне каждой записи.
Это ответ на
Цитата:
А как сделать так что бы суммировались только значения больше 100.
Т.е. проверка нужна именно по каждой записи, а не по сумме в группе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запросы niki-maximal SQL, базы данных 3 26.02.2014 21:00
SQL запросы bumbarashek SQL, базы данных 2 22.05.2013 21:04
SQL-запросы Jrcfyf C# (си шарп) 3 24.01.2012 21:40
sql запросы Mr.Steroid Помощь студентам 20 16.10.2010 21:25