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

Откуда: Ростов-на-Дону
Сообщений: 484
Я полагаю, что если не оговорено обратное, то поля допускают NULL-значения.
Тем более, что эта установка по умолчанию для неключевых полей.

Можно было бы отразить это на схеме, но я старался сделать ее более компактной.
4 апр 04, 20:55    [611602]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Nu-Nu
Member

Откуда:
Сообщений: 1
по поводу 28 задания. не подскажите, где ошибка?select avg (c.hd) sred
from (select b.hd
from product a, (select maker, hd from pc, product where product.model=pc.model) b
where a.maker=b.maker
and a.maker in (select maker from product, printer where product.model=printer.model)) c
19 апр 04, 14:31    [635987]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
ЧТо-то не могу сделать упр №45. Пытаюсь посчитать слова по количеству пробелов, а это не есть правильно. Может кто знает другой способ. Задача оценена на 1.
26 апр 04, 10:10    [648857]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
josia
Member

Откуда: http://exactpro.com
Сообщений: 482
Воспользуйтесь LIKE или CHARINDEX. Удачи.
26 апр 04, 13:11    [649454]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Chaton
Member

Откуда:
Сообщений: 1
Nu-Nu
По-моему, можно проще:

select avg(hd) from PC inner join Product on PC.model=Product.model where Product.maker in (
select distinct maker from Product where type='Printer')
27 апр 04, 10:00    [651077]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Драконов
Member

Откуда:
Сообщений: 2
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=22955#128567

select maker
from (select distinct maker,type from Product where type in ('PC','Laptop')) as a
group by maker
having count(*)=1 and max(type)='PC'
28 апр 04, 10:02    [653515]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Драконов
Member

Откуда:
Сообщений: 2
зацените извращенца ;)

Задание: 39
Найдите корабли, "сохранившиеся для будущих сражений"; т.е. выведенные из строя в одной битве (damaged), они участвовали в другой.

select a.ship
from outcomes a,battles b
where a.battle=b.name
group by a.ship
having count(*)>1
and (max(case when a.result='damaged' then convert(int,convert(varchar,b.date,112)) else 100000000+
convert(int,convert(varchar,b.date,112)) end) % 100000000)>min(case when a.result='damaged' then convert(int,convert(varchar,b.date,112)) else 100000000+convert(int,convert(varchar,b.date,112)) end)
29 апр 04, 09:32    [656124]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Обнаружилось (Драконов) , что задачи 36 и 43 практически одинаковы. Поэтому я поменял 43 задачу. Теперь она выглядит так:

Для каждой страны определить год, когда на воду было спущено максимальное количество ее кораблей. В случае, если окажется несколько таких лет, взять минимальный из них. Вывод: страна, год, количество кораблей

Предыдущее решение задачи с этим номером аннулировано (у тех, кто не дошел до второго этапа).
4 май 04, 13:59    [662140]     Ответить | Цитировать Сообщить модератору
 Упражение 43  [new]
Falc0nMan
Member

Откуда: Москва
Сообщений: 28
Упражнение 43.
Для каждой страны определить год, когда на воду было спущено максимальное количество ее кораблей. В случае, если окажется несколько таких лет, взять минимальный из них. Вывод: страна, год, количество кораблей

Мой запрос:
SELECT Country, Qty, MIN(Launched) AS Year
FROM 
(SELECT Country, Launched, COUNT(Name) AS Qty
FROM Classes cl
INNER JOIN Ships sh ON sh.Class = cl.Class
GROUP BY Country, Launched
) AS t1
WHERE Qty = 
(
 SELECT MAX(Qty) FROM 
(SELECT Country, Launched, COUNT(Name) AS Qty
FROM Classes cl
INNER JOIN Ships sh ON sh.Class = cl.Class
GROUP BY Country, Launched
) AS t2 WHERE t2.Country = t1.Country
)
GROUP BY Country, Qty

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

Country Qty Year
Japan 1 1913
USA 2 1941
Gt.Britain 6 1916

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

Country Qty Year
Japan 1 1913
USA 2 1941
Gt.Britain 6 1916

Дайте хоть наводку, что неверно. А то уж второй день бьюсь, не могу решить.
11 май 04, 18:10    [672193]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

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

Даю наводку.
Хитрость здесь состоит в том, что могут быть корабли с неизвестным годом спуска на воду. Тогда может получиться так, что спущено на воду больше всего кораблей было в году NULL.
Я полагаю, что это очевидно неправильное решение, поэтому не делал дополнительного уточнения в условии задачи.
12 май 04, 10:19    [672981]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Falc0nMan
Member

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

Спасибо, подсказка помогла...
12 май 04, 10:48    [673053]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Объясните почему не правильно. №45

SELECT A.ship
FROM (SELECT ship, SUBSTRING (ship, CHARINDEX(' ', ship)+1, LEN(ship) - CHARINDEX(' ', ship)) as Ending
             FROM Outcomes
             WHERE CHARINDEX(' ', ship) > 0
             UNION ALL
             SELECT name as ship, SUBSTRING (name, CHARINDEX(' ', name)+1, LEN(name) - CHARINDEX(' ', name)) as Ending
             FROM Ships	
             WHERE CHARINDEX(' ', name) > 0     	
) as A
WHERE CHARINDEX(' ', A.Ending) > 0
13 май 04, 11:18    [675572]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Iris_m
Member

Откуда: Moscow
Сообщений: 145
Скажите пожалуйста, в чем ошибка?
26 задание

select avg(price) from
(select avg(price) as price from pc inner join product p on p.model=pc.model where p.maker='A'
union
select avg(l.price) as price from laptop l inner join product p on p.model=l.model where p.maker='A') s


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

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

Спасибо.
13 май 04, 13:38    [676115]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
To Iris_m
Среднее средних не равно среднему общего числа.
Арифметика, понимаете :-)
13 май 04, 15:48    [676552]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

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

На первый взгляд правильно. Могу посоветовать написать попроще. Задача то на единицу.
Ваше решение проверю на тестовой базе вечерком. Сообщу, если что обнаружу.
13 май 04, 16:02    [676611]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Дмитрий Валуев
Member

Откуда: Южное Тушино
Сообщений: 232
Serge I
Можно и более определенно:
Среднее средних всегда не меньше общего среднего
13 май 04, 16:07    [676636]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Iris_m
Member

Откуда: Moscow
Сообщений: 145
2 Serge I:
дело было не в среднем среднем, а в union all :)
а можно еще вопросик? вроде все так.. и тема избитая.. и faq я на эту тему сто раз перечитала, но все равно не пойму.
37 задание

select sub.class
from
(select c.class, count(o.ship) as num from classes c inner join outcomes o on c.class=o.ship where c.class not in (select name from ships) group by c.class
union
select c.class, count(s.name) as num from classes c inner join ships s on c.class=s.class where c.class not in (select c.class from classes c inner
join outcomes o on c.class=o.ship) group by c.class) sub
where sub.num=1

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

Результат правильного выполнения упражнения: class Bismarck
13 май 04, 16:24    [676701]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Дмитрий Валуев
Согласен.
13 май 04, 16:26    [676717]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Iris_m
UNION - это другая ошибка.
Похоже, что в 37 задаче дело тоже в UNION.
Рассмотрите ситуацию, когда помимо Бисмарка в Ships есть корабль класса Бисмарк. Итого имеем два корабля этого класса.
13 май 04, 16:33    [676747]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Serge I
Member

Откуда: Ростов-на-Дону
Сообщений: 484
Hel975
Как верно заметил Дмитрий Валуев, проблема с вашим запросом тоже заключается в UNION ALL. Один и тот же корабль, фигурирующий в Ships и Outcomes, будет выводиться несколько раз. Более того, только в таблице Outcomes один корабль может упоминаться несколько раз, если он участвовал в нескольких битвах.
13 май 04, 19:24    [677321]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Iris_m
Member

Откуда: Moscow
Сообщений: 145
скажите пожалуйста, что не так в моем решении упражнения 63?

select p.name
from pass_in_trip pi
inner join pass_in_trip pi1 on pi.place=pi1.place and pi.id_psg=pi1.id_psg and pi.trip_no<pi1.trip_no and pi.date<>pi1.date
inner join passenger p on pi.id_psg=p.id_psg

ответ не принимает... :(
19 май 04, 11:06    [686455]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Дмитрий Валуев
Member

Откуда: Южное Тушино
Сообщений: 232
iris_m
and pi.trip_no<pi1.trip_no and pi.date<>pi1.date

Так вы хотите избежать соединения записи с собой, но номер полета может быть и тем же самым, но в другой день, и даты полетов могут совпадать, но с разным временем вылета.
19 май 04, 11:29    [686573]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Iris_m
Member

Откуда: Moscow
Сообщений: 145
но тогда ведь должно подходить решение?

select p.name from pass_in_trip pi inner join passenger p on p.id_psg=pi.id_psg
group by pi.place, p.name
having count(p.name)>1
19 май 04, 11:39    [686609]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Дмитрий Валуев
Member

Откуда: Южное Тушино
Сообщений: 232
Не должно из-за однофамильцев.
19 май 04, 12:18    [686766]     Ответить | Цитировать Сообщить модератору
 Re: Ваше мнение об упражнениях SELECT на http://sql.ipps.ru  [new]
Iris_m
Member

Откуда: Moscow
Сообщений: 145
почему же, если пассажиры имеют разные id_psg, имя упомянется 2 раза... разве не это ли требуется?
19 май 04, 12:22    [686779]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 7 8 9 10 11 [12] 13 14 15 16 .. 31   вперед  Ctrl
Все форумы / Microsoft SQL Server Ответить