пятница, 17 апреля 2020 г.

Определить названия всех кораблей из таблицы Ships, которые удовлетворяют, по крайней мере, комбинации любых четырёх критериев из следующего списка:

Задание: 83 (dorin_larsen: 2006-03-14)
Определить названия всех кораблей из таблицы Ships, которые удовлетворяют, по крайней мере, комбинации любых четырёх критериев из следующего списка: 
numGuns = 8 
bore = 15 
displacement = 32000 
type = bb 
launched = 1915 
class=Kongo 
country=USA 

SELECT name
FROM Ships AS s JOIN Classes AS cl1 ON s.class = cl1.class
WHERE
CASE WHEN numGuns = 8 THEN 1 ELSE 0 END +
CASE WHEN bore = 15 THEN 1 ELSE 0 END +
CASE WHEN displacement = 32000 THEN 1 ELSE 0 END +
CASE WHEN type = 'bb' THEN 1 ELSE 0 END +
CASE WHEN launched = 1915 THEN 1 ELSE 0 END +
CASE WHEN s.class = 'Kongo' THEN 1 ELSE 0 END +
CASE WHEN country = 'USA' THEN 1 ELSE 0 END > = 4

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

В наборе записей из таблицы PC, отсортированном по столбцу code (по возрастанию) найти среднее значение цены для каждой шестерки подряд идущих ПК.

Задание: 82 (Serge I: 2011-10-08)
 
Вывод: значение code, которое является первым в наборе из шести строк, среднее значение цены в наборе. 

WITH CTE(code,price,number)
AS
(
SELECT PC.code,PC.price, number= ROW_NUMBER() OVER (ORDER BY PC.code)
FROM PC
)
SELECT CTE.code, AVG(C.price)
FROM CTE
JOIN CTE C ON (C.number-CTE.number)<6 AND (C.number-CTE.number)> =0
GROUP BY CTE.number,CTE.code
HAVING COUNT(CTE.number)=6

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

Из таблицы Outcome получить все записи за тот месяц (месяцы), с учетом года, в котором суммарное значение расхода (out) было максимальным.

Задание: 81 (Serge I: 2011-11-25)
Из таблицы Outcome получить все записи за тот месяц (месяцы), с учетом года, в котором суммарное значение расхода (out) было максимальным. 

SELECT O.*
FROM outcome O
INNER JOIN
(
SELECT TOP 1 WITH TIES YEAR(date) AS Y, MONTH(date) AS M, SUM(out) AS ALL_TOTAL
FROM outcome
GROUP BY YEAR(date), MONTH(date)
ORDER BY ALL_TOTAL DESC
) R ON YEAR(O.date) = R.Y AND MONTH(O.date) = R.M

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

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

Задание: 80 (Baser: 2011-11-11)
Найти производителей компьютерной техники, у которых нет моделей ПК, не представленных в таблице PC. 

SELECT DISTINCT maker
FROM product
WHERE maker NOT IN (
     SELECT maker
     FROM product
     WHERE type='PC' AND model NOT IN (
          SELECT model
          FROM PC))

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

Определить пассажиров, которые больше других времени провели в полетах.

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

Вывод: имя пассажира, общее время в минутах, проведенное в полетах 

SELECT Passenger.name, A.minutes
FROM (SELECT P.ID_psg,
      SUM((DATEDIFF(minute, time_out, time_in) + 1440)%1440) AS minutes,
      MAX(SUM((DATEDIFF(minute, time_out, time_in) + 1440)%1440)) OVER() AS MaxMinutes
      FROM Pass_in_trip P JOIN
       Trip AS T ON P.trip_no = T.trip_no
      GROUP BY P.ID_psg
      ) AS A JOIN
 Passenger ON Passenger.ID_psg = A.ID_psg
WHERE A.minutes = A.MaxMinutes

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

Для каждого сражения определить первый и последний день месяца, в котором оно состоялось.

Задание: 78 (Serge I: 2005-01-19)
Для каждого сражения определить первый и последний день 
месяца, 
в котором оно состоялось. 
Вывод: сражение, первый день месяца, последний 
день месяца. 
Замечание: даты представить без времени в формате "yyyy-mm-dd". 

SELECT name, REPLACE(CONVERT(CHAR(12), DATEADD(m, DATEDIFF(m,0,date),0), 102),'.','-') AS first_day,
             REPLACE(CONVERT(CHAR(12), DATEADD(s,-1,DATEADD(m, DATEDIFF(m,0,date)+1,0)), 102),'.','-') AS last_day
FROM Battles

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

Определить дни, когда было выполнено максимальное число рейсов из Ростова ('Rostov').

Задание: 77 (Serge I: 2003-04-09)
Определить дни, когда было выполнено максимальное число рейсов из 
Ростова ('Rostov'). Вывод: число рейсов, дата. 

SELECT TOP 1 WITH TIES * FROM (
  SELECT COUNT (DISTINCT P.trip_no) count, date
  FROM Pass_in_trip P
  JOIN Trip T ON T.trip_no = P.trip_no AND town_from = 'Rostov'
  GROUP BY P.trip_no, date) X
ORDER BY 1 DESC

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