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

Откуда:
Сообщений: 112
Нет ну я конечно могу сделать еще несколькими способами, но этоо=ж самый простой?
15 фев 03, 16:59    [129871]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
marse
Member

Откуда:
Сообщений: 112
SELECT point as [пункт], SUM(res) as [остаток] FROM (SELECT point, inc as res FROM Income_o WHERE date < '2001-04-15' UNION ALL SELECT point, -out as res FROM Outcome_o WHERE date <'2001-04-15' ) subquery
GROUP BY point

черт. Вот этот сработал :-)
15 фев 03, 17:02    [129873]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484

To all
Извиняюсь за неудобства. Надеюсь, что в понедельник днем можно будет писать запросы не в строку. Собственно, и сейчас ограничениями
является только не начинать с пробелов и писать FROM с пробелами по обеим сторонам.
15 фев 03, 17:12    [129874]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
marse
Member

Откуда:
Сообщений: 112
Я наверное совсем тупым стал, к концу рабочего (для меня) дня
уже минут 30 тупо ищу, где ошибка.
Может в ДНК :-)

Задание: 8
Найдите производителя, продающего ПК, но не ПК-блокноты.

SELECT distinct Maker
FROM Product p
WHERE
NOT EXISTS ( SELECT 1
FROM Laptop
WHERE Laptop.model = p.model) AND
-- NOT EXISTS ( SELECT 1
-- FROM Printer
-- WHERE Printer.model = p.model) AND
EXISTS ( SELECT 1
FROM PC
WHERE PC.model = p.model)


Неверно.
Результат выполнения Вашего запроса:

Maker
A
B
E

Результат правильного выполнения упражнения:

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

Откуда: Окраина, Харьков
Сообщений: 147
Надеюсь с бисмарком тоже что-нибудь решите?
Чего стоит добавить его в Ships. И как понимать упражнение 44

select name

from ships
where name like 'R%'


и результат:

Неверно.

Результат выполнения Вашего запроса:

name
Ramillies
Renown
Repulse
Resolution
Revenge
Royal Oak
Royal Sovereign

Результат правильного выполнения упражнения:

name
Ramillies
Renown
Repulse
Resolution
Revenge
Rodney
Royal Oak
Royal Sovereign
15 фев 03, 17:46    [129886]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
genie_vats
Member

Откуда: Окраина, Харьков
Сообщений: 147
2 marse

У Вас действительно неправильно.
(:
15 фев 03, 17:47    [129887]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
genie_vats
Member

Откуда: Окраина, Харьков
Сообщений: 147
Откуда в ответе берется Rodny?!!
У вас его и в таблицах-то нет!
(:
15 фев 03, 18:02    [129889]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
marse
Member

Откуда:
Сообщений: 112
2 genie_vats


мы-ж комсомольцы легких путей-то не ищем :-)

select distinct maker
from Product p
where type = 'PC' AND NOT EXISTS(SELECT * FROM Product pp WHERE pp.type = 'Laptop' and p.maker = pp.maker)
15 фев 03, 18:09    [129891]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
marse
Member

Откуда:
Сообщений: 112
Задание: 23
Найдите производителей по меньшей мере двух различных компьютеров (PC или Laptop), имеющих скорость не менее 750 МГц. Вывести: Maker

select maker
from Product p inner join
(SELECT distinct model
FROM pc
WHERE speed >= 750
UNION ALL
SELECT distinct model
FROM Laptop
WHERE speed >= 750) x
ON x.model = p.model
group by maker
having count(*) >= 2

Неверно.
Результат выполнения Вашего запроса:

maker
A
B

Результат правильного выполнения упражнения:

maker
A
B


Ну этот-то чем не угодил?

может это имелось ввиду?

select maker
FROM
(SELECT maker
FROM Product p inner join
pc x ON x.model = p.model
WHERE speed >= 750
GROUP BY maker
having count(*) >= 2
UNION
SELECT maker
FROM Product p inner join
Laptop x ON x.model = p.model
WHERE speed >= 750
GROUP BY maker
having count(*) >= 2
) x
group by maker
15 фев 03, 19:09    [129901]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
О Бисмарке и не только
Особенность схемы состоит в том, что в Outcomes могут быть корабли, отсутствующие в Ships (висящие кортежи).
Я рассуждаю так: если есть такой корабль, то следует проверить, нет ли класса в Classes с именем этого корабля. Если это так, то тогда этот корабль является головным кораблем класса, и о нем известно все кроме даты спуска на воду. В результирующем наборе отсутствующая дата заменяется NULL-значением в его обычном смысле – отсутствие информации.
Запросы должны работать на произвольных не противоречащих схеме данных, а не только на тех, что находятся в таблицах в данный момент. Например, возможно, что поврежденный корабль после ремонта участвовал в более позднем сражении.
Не стоит критиковать схему БД. По крайней мере, она позволяет строить более сложные запросы. Кого интересует первоисточник, может обратиться на домашнюю страницу книги Ульмана Дж. (http://www-db.stanford.edu/~ullman/fcbd.html), из которой (книги) она заимствована.
16 фев 03, 11:45    [129960]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
genie_vats
Member

Откуда: Окраина, Харьков
Сообщений: 147
Все же ответьте - как в эту схему укладывается Rodney? Он присутствует только в Outcomes и ВСЁ!
16 фев 03, 13:14    [129973]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Очень странно. Детская задачка 101.

Запрос:

select top 1 with ties model,price from printer order by price desc


и результат :-)

Неверно.
Результат выполнения Вашего запроса:

model price
1276 400.0
1288 400.0

Результат правильного выполнения упражнения:

model price
1276 400.0
1288 400.0


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

Откуда: Ростов-на-Дону
Сообщений: 484
To genie_vats

В №44 требуется найти названия кораблей, которые начинаются на 'R'.
Спросим себя: Rodney это корабль? Начинается ли он на букву 'R'?
Ответ: да-да.
Так в чем проблема? Почему вы решили, что слово "корабль" означает таблицу Ships?

По-моему, причина недоразумений состоит в том, что интуитивно ожидается наличие "правильной" схемы и полноты информации.
16 фев 03, 15:12    [129988]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

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

Запрос:

select distinct Maker,price from product 

join
(select top 1 with ties model,price from printer where color='y' order by price) Q
on product.type='Printer' and product.model=q.model


результат

Неверно.
Результат выполнения Вашего запроса:

maker price
D 270.0

Результат правильного выполнения упражнения:

Maker price
D 270.0


Опять непонятно в чем дело. Кстати исправление m на M результата также не дает ;-)
16 фев 03, 16:33    [129999]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Задачка 23 3

Запрос:

select maker from product P join

(select 'PC' type,model from PC where speed>=750
union
select 'Laptop' type,model from Laptop where speed>=750
) Q
on P.type=Q.type and P.model=Q.model
group by maker having count(*)>1


Результат

Неверно.
Результат выполнения Вашего запроса:

maker
A
B

Результат правильного выполнения упражнения:

maker
A
B


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

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

Вопрос философский :-)) Нарвался на ошибку из за того, что вставил обработку isnull(inc,0),isnull(out,0) Не могу сказать что баг - никто не просил NULL обрабатывать. Но по сути в такой обработке ошибки нет
16 фев 03, 18:51    [130006]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

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

ИМХО "нечестная".

В том смысле что сначала нужно попытаться догадаться, что за головным кораблем скрывается имя класса %-( А потом получить правильный рекордсет с сообщением что результат неверный (как во многих задачах). Прокомментируйте плз
16 фев 03, 19:16    [130013]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

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

Любопытная - однако на мой взгляд было бы интереснее, чтобы такие корабли все же были. Там есть один подводный камень насчет даты нового сражения, которая должна быть в будущем.Текущие данные этого не позволяют
16 фев 03, 19:44    [130014]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Alseka
Member

Откуда:
Сообщений: 5
№36
ПРА ЧЁ ЭХО?
Перечислите названия головных кораблей, внесенных в базу данных.

Что скрывается под термином "головной корабль"? ИМХО, это корабль давший свое название классу. Тогда почему запрос не является верным?
Select class name From Classes
17 фев 03, 10:44    [130172]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

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

Запрос:

select battle from outcomes o

left join classes c1 on c1.class=o.ship --учитываем классы без ships

left join ships s on s.name=o.ship -- учитываем ships

left join classes c2 on s.class=c2.class -- находим их классы

where c1.class is not null or c2.class is not null -- отсекаем корабли которых нет в [b]classes[/b]и [b]ships[/b]

group by battle, case when c2.country is null then c1.country else c2.country end --группируем по стране

having count(*) > 2 -- отсекаем количество менее 3


И что здесь неверного логически ?

Рекордсет пустой - как и требуется.

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

Откуда: Ростов-на-Дону
Сообщений: 484
По поводу Top N
Новация Microsoft. Просто ограничивает результирующий набор. Сомнительно использование запросов с Top в приложениях, поскольку результат зависит от сортировки и может привести к неверному анализу, поскольку строк с идентичными значениями в полях сортировки может оказаться, например, больше значения в Тор.
Изменения на сайте:
Теперь вы можете писать запросы в свободном стиле.
Добавлены схемы баз данных.

To Valdis
Задачка №23 уже анализировалась выше, почитайте. Ваше решение неверно.

То Alseka
Класс может быть, а корабля в текущем состоянии базы может не оказаться.
17 фев 03, 12:27    [130296]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

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

Насчет Top N - было бы верно, если бы не конструкция with ties которая и позволяет обойти эту проблему, и в результате набор возвращается верный. Так что с ходу отбрасывать подобные решения мне представляется неправильным

Насчет
То Alseka
Класс может быть, а корабля в текущем состоянии базы может не оказаться


Как так ? Для других задач КЛАСС это КОРАБЛЬ, для этой - нет ? Или Вы имеете в виду что его могли потопить и тогда нам не надо его учитывать ? Но в условии задачи об этом ничего. Кстати о том что головной корабль это именно родоначальник класса нигде не написано. Разве только в Вашем ответе на одно из писем в трэде.

Насчет 23 - Спасибо, почитал. Вот только такие условия не грех бы в условии писать. А то оно читается так, что речь идет о 2-х ЛЮБЫХ моделях, не важно PC или Laptop
17 фев 03, 13:12    [130350]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Alseka
Member

Откуда:
Сообщений: 5
То Alseka
Класс может быть, а корабля в текущем состоянии базы может не оказаться.

Ок, проверимся на наличие кораблей в БД, они могут упоминаться в двух таблица: Ships и Outcomes

Странно. Почему запрос 1 считается неверным, а запрос 2 - ок?
Select
class name
From
Classes C
Where
class in (Select Class From Ships)
or
class in (Select Ship From Outcomes)


Select Class From Ships Where Class = Name
union
Select Ship From Outcomes Inner Join Classes on Ship = Classes.Class
17 фев 03, 13:14    [130353]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
еще раз

To Valdis

Мне кажется противоречия тут нет. Т.е. если есть корабль (в Outcomes или Ships), то мы определяем его класс. А класс без корабля может быть (ну это как поставщик без товаром или сотрудник без детей) в базе, а не вообще. Ясно, что если есть класс, то был корабль с таким названием; но речь то-идет о текущем состоянии базы данных.

В описании базы данных есть слова: Корабли в «классах» построены по одному и тому же проекту, и классу присваивается название первого корабля этого класса.
Ну, первый - это головной...
Насчет формулировок я подумаю. Обязательно учту ваши соображения.
Схему менять не будем.
17 фев 03, 13:27    [130363]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Valdis
Member

Откуда: Москва
Сообщений: 24
Присоединяюсь к вопросу Alseka, чем отличается

select class from classes 

where
exists (select class from ships where ships.name=classes.class)
or
exists (select class from outcomes where outcomes.ship=classes.class)


от

Select Class From Ships Where Class = Name 

union
Select classes.Class From Outcomes Inner Join Classes on Ship = Classes.Class


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