Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 31   вперед  Ctrl
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
2 Serge I

Все еще жду комментария по № 46.

Кстати - очень любопытно. Может быть я и Буратино но:
Задача 58 - условие:

Вес снаряда (в фунтах), выпускаемого орудием, примерно равен половине куба его калибра (в дюймах). Определите средний вес снарядов для кораблей каждой страны.

То есть (bore^3)/2 (???)

Если да - то как при этом можно получить результат вида:
country weight
Germany 6
Gt.Britain 6
Japan 6
USA 8


При том что МИНИМАЛЬНЫЙ калибр равен 14
17 фев 03, 14:38    [130446]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Alseka
Member

Откуда:
Сообщений: 5
58

Скажем так, правильный ответ, который можно посмотреть, нажав одноименную кнопку, отличался от результата моего запроса, при это запрос был зачтен.

??????????????????????
17 фев 03, 17:16    [130622]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
2Alseka

Ради смеха подсунул вчерашний запрос на который получил отлуп и к моему удивлению все cработало ;-) Видимо баг зафиксили ;-))
17 фев 03, 17:32    [130634]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Alseka
Member

Откуда:
Сообщений: 5
ХЗ

-- 37
Select class From
(Select C.Class Class From Classes C
Inner Join Outcomes O On O.Ship = C.Class
Union All
Select C.Class From Classes C
Inner Join Ships S On S.Class = C.Class
) T
Group By T.Class
Having Count(*) = 1

-- 38
Select
country
From
(Select c.country From Classes C
inner join Classes t on t.country = c.country and t.type = 'bc'
inner join Ships on (C.Class = Ships.Class)
Where c.type = 'bb'
Union
Select c.country From Classes C
inner join Classes t on t.country = c.country and t.type = 'bc'
inner join Outcomes on (C.Class = Outcomes.Ship)
Where c.type = 'bb'
) TT

-- 46
Select
Battle bat
From
(Select Battle, Country, Ship From Classes C
Inner Join Outcomes O On O.Ship = C.Class
Union
Select Battle, Country, Ship From Classes C
Inner Join Ships S On S.Class = C.Class
Inner Join Outcomes O On O.Ship = S.Name
) T
Group By Battle, Country
Having Count(*) >= 3
17 фев 03, 18:23    [130678]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
неважно кто
Guest
Я тоже 38 не решил. Как только не извращался, не хочет засчитывать и все тут. :(
17 фев 03, 19:16    [130720]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Авторам ресурса (краткое резюме)

Как я уже писал - в общем и целом идея замечательная, вот только казуистики в некоторых задачах больше чем смысла. Как мне кажется здесь собираются SQL программисты, а не любители решения нетривиальных логических (или еще каких) задач. Многие задачи приходится решать, мягко говоря, извращенным способом, для того чтобы результат был засчитан. Второе - я так и не дождался комментариев по поводу задачи № 46, а таких задач на самом деле немало. У меня есть сомнение что запрос был отклонен по причине проверки на неких мифических данных, отличных от того что нам показывали. По крайней мере смоделировать ошибочную ситуацию мне не удалось.
Как мне кажется, ценность ресурса от подобных вещей не повышается, а падает. Лично мне (за остальных говорить не буду) мало интересно придумывать некий извращенный способ решения задачи вместо применения более прямых решений.

Надеюсь на коментарии.
17 фев 03, 20:31    [130738]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
38

Поубивал бы проектировщика, который так замечательно построил модель, постановщика, который так замечательно поставил задачу и заказчика, который отказывается принимать правильно сделанныю работу.
17 фев 03, 22:20    [130763]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
неважно кто
Guest
Акузище, ты в самую точку попал!

Но как забавно было вслепую подбирать решения на кривой базе. Какая то изюминка что ли... Если бы все было просто, то было бы не так интересно.
17 фев 03, 22:58    [130769]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Вопрос №36
Перечислите названия головных кораблей, внесенных в базу данных.

Речь опять таки идет о кораблях. Все они, как справедливо отмечено, находятся (всего лишь) в двух таблицах: Ships и Outcomes. Просто брать список классов из Classes некорректно (для этой «плохой» БД), поскольку может оказаться класс, для которого нет кораблей в базе данных. Поэтому нужно просто проверять, не совпадает ли название корабля с именем класса.
Оба приведенных запроса valdis’а правильны. Разве ответы сервера отличаются?
Вопрос №46
Укажите сражения, в которых участвовало, по меньшей мере, три корабля одной и той же страны.
Достаточно сложный запрос. Страны находятся в Classes. Я рассуждаю так: если имя корабля из Outcomes совпадает с именем класса, то мы его считаем. Плюс (UNION) ищем совпадающие имена с кораблями в Ships, соединенных с Classes, поскольку, в противном случае, нам неизвестна страна. Далее Group By, Having. Не забудьте про Distinct, чтобы, не дай Бог, не посчитать одно и то же сражение несколько раз.
Вопрос №52
Моя вина, каюсь. Дело не в запросе, а в типах данных. Данные в базе целые, ну я и сэкономил на типе – tinyint. Вычисления (bore^3)/2 приводятся к этому типу. Потому что ^ это не возведение в степень, как в VB, а операция XOR. Правильно было бы bore* bore* bore или LOG и EXP, но это сейчас даст ошибку приведения типов. Исправлю, как только смогу.
18 фев 03, 00:32    [130782]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
2 Serge I
36

Сегодня не проверял - а вот вчера на первый получил отлуп, второй прокатил.
18 фев 03, 11:58    [130969]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Приносим свои извинения за наши ошибки при проверке упражнений №№ 37, 38 и 58. Они будут исправлены в ближайшее время.
Благодарим Valdis, Alseka и многих других, чьи замечания помогли нам выявить ряд промахов.
Не судите строго, дайте и нам право на ошибку.
18 фев 03, 21:39    [131663]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Задание: 25
Найдите производителей принтеров с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM. Вывести: Maker

На каком языке это написано?

Или у принтеров есть процессор или у производителей, что впрочем не следует из модели.

Ааа! Теперь я понял! Имеются ввиду ПК, которые производят принтеры. Только непонятно, почему для производства принтеров используются ПК с наименьшим объёмом RAM.
19 фев 03, 10:37    [131893]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
26

select avg(a.price)
from (
select model, price
from pc
union
select model, price
from laptop
) a

Ха-ха!
Правильные запросы не принимаются, а неправильные - всегда пожалуйста!
19 фев 03, 10:42    [131900]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Все замеченные ошибки при проверке упражнений устранены.
19 фев 03, 11:38    [131973]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Определился человек, решивший все упражнения.
Наши поздравления!!!
19 фев 03, 12:41    [132055]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
snake
Member

Откуда: Russia, Penza
Сообщений: 2290
сертификат ему!
19 фев 03, 12:42    [132057]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
2 Serge I

Действительно оперативно, спасибо. Может быть посмотрим тогда еще на пару странных ситуаций ?

38


select distinct bb.country from
(
select distinct country from classes
where type='bb' and
(exists (select * from ships where classes.class=ships.class)
or
exists (select * from outcomes where classes.class=outcomes.ship))
) bb
join
(
select distinct country from classes
where type='bc' and
(exists (select * from ships where classes.class=ships.class)
or
exists (select * from outcomes where classes.class=outcomes.ship))
) bc
on bb.country=bc.country


Итак выбираем список стран из таблички классов для обычных кораблей 'bb'. Проверяем - есть ли что нибудь из данных классов в БД (ships or outcomes). Ставим distinct. Делаем то же самое для bc. Затем Inner join by country. Рекордсет верный - где нарушена логика ?
19 фев 03, 16:39    [132376]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
40

select distinct classes.class,name,country from classes 

join
(select ship name, ship class from outcomes
union
select name,class from ships) S
on s.class=classes.class and numguns>=10


Опять не вижу нарушения логики. Условие выборки только реальных кораблей соблюдено. NumGuns>=10. Что неверно ?
19 фев 03, 16:48    [132383]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Хотел писать про 37 - но сегодня вчерашний запрос прокатил ;-)

Молодцы !

Жду комментариев на предыдущие письма.

Спасибо
Valdis
19 фев 03, 17:02    [132396]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
RiliR
Member

Откуда:
Сообщений: 170
А по каким критериям оценивается правильность, интересно?
№ 23

SELECT DISTINCT P.maker
FROM Product P
INNER JOIN
((SELECT model, speed FROM PC)
UNION
(SELECT model, speed FROM Laptop)) PL
ON P.model = PL.model
WHERE PL.speed >= 750
GROUP BY P.maker
HAVING COUNT(*) >= 2


В чем ошибка?
19 фев 03, 17:31    [132440]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
To akuz
Да, к сожалению, второпях при внесении исправлений зацепили и правильный фрагмент кода. Такие-то запросы раньше ведь не проходили. Надеюсь, что уже сегодня опять не будут проходить. А если кому-то счастье в результате, то и это неплохо.
To RiliRЗ
десь нечеткая формулировка. Под “разными” моделями понимается, что производиться должен хотя бы один PC и один Laptop.
To Valdis
В №40 поправим формулировку.
В предложенном варианте решения №38 ищется страна, имеющая корабли обоих типов в базе данных. Мы же полагали (опять же проблема в формулировках), что достаточно проверить только таблицу Сlasses, т.к. в ней приведены все имеющиеся классы и страны. Если бы требовалось выяснить это по имеющимся в наличии кораблям, то пришлось бы проверять еще живой он или уже потонул. Что тоже, впрочем, интересно.

To allВ ближайшее время поправим формулировки заданий и, возможно, напишем FAQ. Надеемся, что это устранит неоднозначность в понимании заданий и снимет часть вопросов на форуме.
20 фев 03, 08:19    [132700]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
2 Serge I

К сожалению запрос только по classes также не проходил. Не проверял, проходит ли он сейчас , но обязательно проверю. А что с формулировкой в 40 - можно уточнить ? Там ВООБЩЕ не понятно в чем дело.
20 фев 03, 11:56    [132901]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Да, господа, формулировки менять однозначно надо. Это из серии - иди догадайся где нужно все учитывать, где половину, где третью часть ;-) В этом плане 40 - иезуитский вопрос. Тупо попробовал убрать лишнюю проверку и все прокатило.

Я думаю через недельку есть смысл устроить повторное тестирование. А вообще - спасибо за ресурс. В качестве разминки для мозгов - хорошо. В качестве тренинга в написании запросов - отлично (эт авансом - когда формулировки поправите)

2Serge I - развивать ресурс планируете ?
20 фев 03, 13:40    [133021]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Формулировки обязательно поменяем. Развитие сайта также предполагается.
Сейчас, как нам кажется, все должно проверяться корректно с точностью до формулировок
.
Попробуйте. Пишите замечания, если что не так.
20 фев 03, 14:30    [133088]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Tracer
Member

Откуда:
Сообщений: 728
N 20 IMHO выдает не правильный результат
20 фев 03, 15:05    [133125]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 31   вперед  Ctrl
Все форумы / Microsoft SQL Server Ответить