запросик

piraids
Дата: 12.01.2013 20:19:56
Есть задание:
Получить список из двух колонок: ФИО абонента, количество квитанций по оплате. Вывести только тех абонентво сумма оплаты которых находится в диапазоне от 100 грн до 300 грн

Есть БД:
city(shifrcit integer,name varchar(10))
street(shifrcit integer,shifrstr integer,name varchar(25),ctype varchar(10))
abon(shifrabo integer,fio varchar(25),shifrcit integer,shifrstr integer.dom integer,kwa integer)
kvit(shifrkvi integer,shifrabo integer,summa dec(15?2),datakvi date))

Помогите реализвовать...
Есть мысссль, но она не верная:

select a.fio, count(b.shifrabo)
from abon a
join kvit b on a.shifrabo=b.shifrabo
group by a.shifrabo
having b.summa between 99 and 301
javajdbc
Дата: 12.01.2013 20:38:36
piraids,

идея правильная, попробуйте точнее выразить последнюю строчку:

...having sum(summa) between 100 and 300
piraids
Дата: 12.01.2013 20:50:55
так а зачем мне добавлять функцию sum?
qwerty112
Дата: 12.01.2013 21:13:54
piraids
так а зачем мне добавлять функцию sum?

затем, что квитанций несколько, и в них несколько различных сум
piraids
Дата: 12.01.2013 21:21:53
это я понимаю, но я не понимаю как мне это поможет, если мне надо вывести количество оплаченных квитанций сумма которых находится в диапазоне от 100 до 300
tanglir
Дата: 12.01.2013 21:40:01
piraids
сумма оплаты
общая или по каждой квитанции отдельно?
1 - см. советы выше
2 - нужен не having, а where

piraids
select a.fio
<...>
group by a.shifrabo
Может, таки по фио сгруппируете?
qwerty112
Дата: 12.01.2013 21:43:04
так, дядя,
это
piraids
это я понимаю, но я не понимаю как мне это поможет, если мне надо вывести количество оплаченных квитанций сумма которых находится в диапазоне от 100 до 300

и это
автор
Вывести только тех абонентво сумма оплаты которых находится в диапазоне от 100 грн до 300 грн

"две большие разницы"

так что, пройди почитай - п.6 http://www.sql.ru/forum/actualthread.aspx?tid=127456
сформулируй (в первую очередь для себя) задачу,
и возвращайся - с тестовыми данными / планируемым на этих тест.данных результатом
piraids
Дата: 12.01.2013 21:52:54
qwerty112
так, дядя,
это
piraids
это я понимаю, но я не понимаю как мне это поможет, если мне надо вывести количество оплаченных квитанций сумма которых находится в диапазоне от 100 до 300

и это
автор
Вывести только тех абонентво сумма оплаты которых находится в диапазоне от 100 грн до 300 грн

"две большие разницы"

так что, пройди почитай - п.6 http://www.sql.ru/forum/actualthread.aspx?tid=127456
сформулируй (в первую очередь для себя) задачу,
и возвращайся - с тестовыми данными / планируемым на этих тест.данных результатом


ой, я извиняюсь, туплю конечно. голова не варит уже просто, нужно конечно же Вывести только тех абонентво сумма оплаты которых находится в диапазоне от 100 грн до 300 грн
piraids
Дата: 12.01.2013 23:46:29
select a.fio, count(*)
from abon as a
inner join kvit b on b.shifrabo=a.shifrabo
group by 1
having sum(b.summa) between 100 and 300

работающее решение, тему можно закрыть
tanglir
Дата: 13.01.2013 09:45:59
piraids
работающее решение
А если у вас будут абоненты с одинаковыми ФИО?