Форум программистов, компьютерный форум, киберфорум
Наши страницы
Oracle
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Дашустрик
Дашики
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
#1

подзапросы

25.09.2009, 18:28. Просмотров 2270. Ответов 4
Метки нет (Все метки)

Помогите разобраться,а то я совсем запуталась
вот у меня дан запрос:Вывести список читателей,прочитавших в 2 раза больше книг,чем средний показатель.
Для того,чтобы было более понятно,у меня даны 3 таблицы,из которых выводиться запрос(таблицы в прикрепленых файлах)
Вот как я думаю надо пошагово сделать этот запрос:
1. Подсчитать количество сколько прочитал книг каждый читатель (взял приравнивается к прочитал);
2.Вывести среднее арифметическое прочитанных книг на одного читателя;
3.Вывести читателя(ей) у которого количество прочитанных книг больше в 2 раза чем среднеей арифметическое прочитанных книг на одного читателя;
Вот я вывела первый подзапрос:
SQL
1
2
3
4
5
SELECT id_readers,COUNT(N_BOOKS) AS kol
FROM READERS LEFT JOIN GIVEN_BOOKS ON
N_READERS=ID_READERS
GROUP BY id_READERS
;
А вот как остальные вывести я что-то не могу придумать,запуталась.
Помогите разобраться.
Заранее благодарю.
0
Вложения
Тип файла: rar Таблицы.rar (261.5 Кб, 17 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2009, 18:28
Ответы с готовыми решениями:

Подзапросы
Добрый день! Помогите пож написать селект. Нужно вывести события за день, у...

Подзапросы
Мне надо в столбце заменить значение null на прочерк, используя связку таблиц....

GROUP BY и подзапросы
Здравствуйте, подскажите хотя бы с чего начать, задание предполагает...

Подзапросы в joinax
Расскажите плз про них и приведите пример адекватного использования таковых.

вложенные подзапросы
Здравствуйте.Объяснити немножко приоритеты выполнения подзапросов в sql...

4
dm_pletenev85
0 / 0 / 0
Регистрация: 25.09.2009
Сообщений: 4
25.09.2009, 22:28 #2
Чисто логически так:

SQL
1
2
3
4
5
SELECT id_readers,COUNT(N_BOOKS) AS kol
FROM R.READERS,  GIVEN_BOOKS 
WHERE N_READERS=R.ID_READERS AND (SELECT COUNT(N_BOOKS)  GIVEN_BOOKS WHERE N_READERS=R.ID_READERS)>
2*(SELECT SUM(COUNT(N_BOOKS))/ MAX(id_reads) FROM READERS,  GIVEN_BOOKS )
GROUP BY id_READERS
Чисто логически и пошагово )))
0
БурундукЪ
9555 / 2556 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
25.09.2009, 22:40 #3
dm_pletenev85, а теперь представь себе что пару-тройку десятков, а то и сотен ридеров исключили из библиотеки за то что они книжки не сдали, или по другой причине, а id_reads пошел считаться дальше.
нуна использывать функцию Avg - среднее. т.е. так как-то:
SQL
1
2
3
4
5
6
7
8
9
SELECT id_readers,COUNT(N_BOOKS) AS kol
FROM R.READERS
INNER JOIN GIVEN_BOOKS ON N_READERS=R.ID_READERS
WHERE COUNT(N_BOOKS)>
2*(SELECT AVG(a.kol) FROM (COUNT(N_BOOKS) AS kol
FROM R.READERS, GIVEN_BOOKS
WHERE N_READERS=R.ID_READERS
GROUP BY id_READERS)a)
GROUP BY id_READERS
0
dm_pletenev85
0 / 0 / 0
Регистрация: 25.09.2009
Сообщений: 4
26.09.2009, 11:09 #4
Короче вместо этой строки:

SQL
1
2*(SELECT SUM(COUNT(N_BOOKS))/ MAX(id_reads) FROM READERS,  GIVEN_BOOKS )

Нужно так да?


SQL
1
2*(SELECT AVG(COUNT(N_BOOKS)) FROM GIVEN_BOOKS )

И разве можно использовать групповые функции после WHERE?
0
БурундукЪ
9555 / 2556 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
26.09.2009, 11:48 #5
Цитата Сообщение от dm_pletenev85 Посмотреть сообщение
И разве можно использовать групповые функции после WHERE?
count это тоже групповая операция ))
0
26.09.2009, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2009, 11:48

Подзапросы
Здравствуйте! Форумчане, подскажите пожалуйста, почему использование ANY или...

Подзапросы
В подзапросах не понимаю ничего вообще. Есть четыре запроса, нужно объединить...

Подзапросы
Добрый вечер нужна ваша помощь, пропустил много по этой теме а до завтра нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru