|
|
|
| дана база
Издательство P(Pid, Pname, City)
Книга T(Tid, Pid,Tname, cena, Type,DataPubl)
1. определить издательство, в котором опубликовано больше всего книг
2. Выбрать те типы книг, средняя цена дешевых экземпляров(стоимостью менее 100 руб)
которых меньше 70 рублей.
P.S. limit ( x , y ) не использовать | |
|
|
|
|
автор: 5465645 (22.05.2009 в 23:37) |
|
|
для: esboy
(22.05.2009 в 19:56)
| | 1. SELECT * FROM (SELECT `P`.*, COUNT(`T`.`Tid`) AS `cnt` FROM `P` LEFT JOIN `T` ON `P`.`Pid` = `T`.`Pid` GROUP BY `P`.`Pid` ORDER BY `cnt` DESC) AS `t` LIMIT 1;
2. SELECT `type`, AVG(`cena`) AS `avg_price` FROM `T` GROUP BY `type` HAVING `avg_price` < 70 | |
|
|
|
|
автор: 23423423 (22.05.2009 в 23:42) |
|
|
для: 5465645
(22.05.2009 в 23:37)
| | Только во втором я не учёл условие < 100:
2. SELECT `Type`, AVG(`cena`) AS `avg_price` FROM (SELECT `Type`, `cena` FROM `T` WHERE `cena` < 100) AS `t` GROUP BY `Type` HAVING `avg_price` < 70 | |
|
|
|
|
|
|
|
для: 23423423
(22.05.2009 в 23:42)
| | 1. здесь не нужен Limit . И даже вреден, если требуется получить список всех таких издательств.
2. здесь не нужен вложенный подзапрос. | |
|
|
|
|
автор: 23123123 (23.05.2009 в 00:40) |
|
|
для: Trianon
(22.05.2009 в 23:57)
| | 1. Так что ли ? :))
SELECT `P`.*, COUNT(`T`.`Tid`) AS `cnt` FROM `P`
LEFT JOIN `T` ON `P`.`Pid` = `T`.`Pid` GROUP BY `P`.`Pid` HAVING `cnt` =
(
SELECT MAX(`cnt`) FROM (
SELECT `P`.*, COUNT(`T`.`Tid`) AS `cnt` FROM `P`
LEFT JOIN `T` ON `P`.`Pid` = `T`.`Pid` GROUP BY `P`.`Pid`
) AS `t1`
)
2. SELECT `Type`, AVG(`Price`) AS `avg_price` FROM `T` WHERE `Price` < 100 GROUP BY `Type` HAVING `avg_price` < 70 | |
|
|
|
|
автор: 234234 (23.05.2009 в 00:42) |
|
|
для: 23123123
(23.05.2009 в 00:40)
| | 1. Ой, нет, там вложенный подзапрос, конечно, намного проще
SELECT `P`.*, COUNT(`T`.`Tid`) AS `cnt` FROM `P`
LEFT JOIN `T` ON `P`.`Pid` = `T`.`Pid` GROUP BY `P`.`Pid` HAVING `cnt` =
(
SELECT MAX(`cnt`) FROM (
SELECT COUNT(*) AS `cnt` FROM `T` GROUP BY `T`.`Pid`
) AS `t1`
)
|
| |
|
|
|
|
|
|
|
для: 234234
(23.05.2009 в 00:42)
| | так уже более приемлемо. | |
|
|
|
|
автор: 234234 (23.05.2009 в 02:16) |
|
|
для: Trianon
(23.05.2009 в 01:13)
| | а можно и лучше? | |
|
|
|
|
|
|
|
для: Trianon
(23.05.2009 в 01:13)
| | и так пойдет, огромное спасибо!!!!!
я многое сегодня понял) | |
|
|
|