среда, 30 декабря 2020 г.

Задачи и упражнения по SQL запросам

Задачи и упражнения по SQL запросам

SELECT (обучающий этап) задачи по SQL запросам -> https://exercises-on-sql.blogspot.com/
DML
Используя таблицу Product, определить количество производителей, выпускающих по одной модели
Как объединить данные из двух столбцов в один без использования UNION и JOIN?
Команды DML
Как выводить в запросе все столбцы кроме одного, не перечисляя их?
Тест знаний SQL - Основы
Проектирование Интернет-приложений
Найдите размеры жестких дисков, совпадающих у двух и более PC. Вывести: HD
Найти производителей, которые выпускают более одной модели, при этом все

Оператор SELECT
Предикаты (часть I)
Переименование столбцов и вычисления в результирую...
Получение итоговых значений
Использование в запросе нескольких источников записей
Традиционные операции над множествами и оператор S...
Использование ключевых слов SOME | ANY и ALL с пре...
Преобразование типов
Функции Transact-SQL для обработки даты/времени
Функции работы со строками в MS SQL SERVER 2005
Операторы модификации данных
Оператор UPDATE
Приложение 1. Описание учебных баз данных
Как объединить данные из двух столбцов в один без ...
Как добавить новый столбец в таблицу между существ...
Как вывести по N строк из каждой группы?
Как удалить дубликаты строк из таблицы?
Как удалить дубликаты строк при наличии первичного...
Как подсчитать накопительный итог?
Как выводить в запросе все столбцы кроме одного, н...


воскресенье, 17 мая 2020 г.

Найти тех производителей ПК, все модели ПК которых имеются в таблице PC.

Задание: 71 (Serge I: 2008-02-23)
Найти тех производителей ПК, все модели ПК которых имеются в таблице PC.
SELECT p.maker
FROM product p
LEFT JOIN pc ON pc.model = p.model
WHERE p.type = 'PC'
GROUP BY p.maker
HAVING COUNT(p.model) = COUNT(pc.model)

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql

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

Задание: 72 (Serge I: 2003-04-29)

Вывести: имя пассажира и число полетов.
select TOP 1 WITH TIES name, c3 from passenger
join
(select c1, max(c3) c3 from
(
select pass_in_trip.ID_psg c1, Trip.ID_comp c2, count(*) c3 from pass_in_trip
join trip on trip.trip_no=pass_in_trip.trip_no
group by pass_in_trip.ID_psg, Trip.ID_comp
) as t
group by c1
having count(*)=1) as tt
on ID_psg=c1
order by c3 desc

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql

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

Задание: 73 (Serge I: 2009-04-17)

Вывод: страна, сражение
SELECT DISTINCT c.country, b.name
FROM battles b, classes c
MINUS
SELECT c.country, o.battle
FROM outcomes o
LEFT JOIN ships s ON s.name = o.ship
LEFT JOIN classes c ON o.ship = c.class OR s.class = c.class
WHERE c.country IS NOT NULL
GROUP BY c.country, o.battle

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql

Вывести классы всех кораблей России (Russia). Если в базе данных нет классов кораблей России, вывести классы для всех имеющихся в БД стран.

Задание: 74 (dorin_larsen: 2007-03-23)

Вывод: страна, класс
SELECT c.country, c.class
FROM classes c
WHERE UPPER(c.country) = 'RUSSIA' AND EXISTS (
SELECT c.country, c.class
FROM classes c
WHERE UPPER(c.country) = 'RUSSIA' )
UNION ALL
SELECT c.country, c.class
FROM classes c
WHERE NOT EXISTS (SELECT c.country, c.class
FROM classes c
WHERE UPPER(c.country) = 'RUSSIA' )

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql

Для каждого корабля из таблицы Ships указать название ближайшего по времени сражения из таблицы Battles,

Задание: 75 (Serge I: 2009-04-17)
Для каждого корабля из таблицы Ships указать название ближайшего по времени сражения из таблицы Battles, 
в котором корабль мог бы участвовать после спуска на воду. Если год спуска на воду неизвестен, взять последнее по времени сражение. 
Если нет сражения, произошедшего после спуска на воду корабля, вывести NULL вместо названия сражения. 
Замечание. Считать, что корабль может участвовать в сражении, которое произошло в год спуска на воду корабля. 
Вывод: имя корабля, год спуска на воду, название сражения
select shipname,launched,batname
from
(select s.name as shipname,launched,b.name as batname,
row_number() over (partition by s.name order by "date") as num
from ships s,battles b
where to_char("date",'yyyy')>=launched
and launched is not null)
where num = 1
union
(
select name,launched,(select name from battles
where "date" = (select max("date") from battles)) as batname
from ships
where launched is null
)

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql

Определить время, проведенное в полетах, для пассажиров, летавших всегда на разных местах. Вывод: имя пассажира, время в минутах.

Задание: 76 (Serge I: 2003-08-28)
Определить время, проведенное в полетах, для пассажиров, летавших всегда на разных местах. Вывод: имя пассажира, время в минутах. 

WITH cte AS
(SELECT ROW_NUMBER() OVER (PARTITION BY ps.ID_psg,pit.place ORDER BY pit.date) AS rowNumber
,DATEDIFF (minute, time_out, DATEADD(DAY,IIF(time_in<time_out,1,0),time_in)) AS timeFlight, ps.Id_psg, ps.name
FROM Pass_in_trip pit LEFT JOIN trip tr ON pit.trip_no = tr.trip_no
LEFT JOIN Passenger ps ON ps.ID_psg = pit.ID_psg -- Все рейсы
)
SELECT MAX(cte.name),SUM(timeFlight) FROM cte
GROUP BY cte.ID_psg
HAVING MAX(rowNumber) = 1

Все задачи и решения: https://exercises-on-sql.blogspot.com/2017/02/select-sql.html
sql пример,select sql,sql запрос пример,sql запрос,sql использование,написать sql запрос,обучение sql