|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
Не знаю в какой раздел написать. Решил что в "обучении" будет к месту. Вобщем, задачка из раздела "обучение" №26 http://www.sql-ex.ru/learn_exercises.php Схема БД состоит из четырех таблиц: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed, ram, hd, screen, price) ... Найдите среднюю цену ПК и ПК-блокнотов, выпущенных производителем A (латинская буква). Вывести: одна общая средняя цена. http://xmages.net/show.php/1976132_jpg.html][IMG] http://xmages.net/storage/10/1/0/d/1/upload/f0149afb.jpg [/IMG] Следующий запрос почему-то не проходит: SELECT AVG(s.price) FROM (SELECT price FROM pc,product WHERE pc.model=product.model AND product.maker='A' UNION SELECT price FROM laptop,product WHERE laptop.model=product.model AND product.maker='A') as s и еще не могу понять, почему следующий запрос выдает другой результат: SELECT AVG(s.price) FROM ( SELECT price,type FROM pc,product WHERE pc.model=product.model AND product.maker='A' UNION SELECT price,type FROM laptop,product WHERE laptop.model=product.model AND product.maker='A') AS s ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 01:40 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
В Ваших запросах не учтено условие, когда в базе есть несколько одинаковых моделей РС или Laptopa одного производителя. Рекомендую все-таки додуматься самому, если действительно хотите научиться хорошо разбираться в SQL. "Куда думать" я Вам уже подсказал. Поверьте, это у них еще далеко не сложная задачка. Там с базой "Корабли" вообще ж :-) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2010, 23:12 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
все равно не понятно. Если без дубляжей, пробую добавлять DISTINCT, не помогает. Для проверки делаю следующий запрос: SELECT pc.model,price,'pc' AS type,maker FROM pc,product WHERE pc.model=product.model UNION SELECT laptop.model,price,'laptop' AS type,maker FROM laptop,product WHERE laptop.model=product.model копирую получившуюся таблицу в EXCEL и там считаю СРЗНАЧ() (для производителя 'A'), но результат все равно не тот, что нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 16:32 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
moggi, я бы попробовала вариант Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2010, 16:45 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, спасибо. Ваш вариант дает правильный результат, как и мой надо было просто в объединение UNION добавить модификатор ALL (я-то думал он используется по умолчанию). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2010, 12:25 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
Такие вопросы можно задавать в поддержку сайта sql-ex.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2012, 14:43 |
|
задачка с sql-ex.ru
|
|||
---|---|---|---|
#18+
with asd as( Select price from pc inner join product on product.model=pc.model where maker='A' Union all select price from laptop inner join product on product.model=laptop.model where maker='A' ) select avg(price) from asd ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 18:14 |
|
|
start [/forum/topic.php?fid=34&msg=37770630&tid=1549818]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 230ms |
total: | 456ms |
0 / 0 |