Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка SQL / 12 сообщений из 12, страница 1 из 1
17.03.2017, 08:33
    #39421170
mishuto-kostya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
Найдите следующий рейс (или рейсы), отправляющийся после рейса с номером 50. Выведите название маршрута, день недели, часы и минуты отправления.

km_prices (расценки за километр)

class(класс автобуса)
price (цена за км для данного класса)
models (марки или модели автобусов)
cod_model (код, суррогатный ключ)
name_model (название, атрибут носит справочный характер)
places (количество мест в автобусах данной марки)
class (класс комфортности)

buses (автобусы)

cod_bus (код автобуса, возможно его инвентарный номер)
bus_number (номер ГИБДД, атрибут носит чисто справочный характер)
cod_model (марка автобуса, внешний ключ)

points (населенные пункты)

cod_point (код, суррогатный ключ)
name_point (название)
distance (расстояние от пункта отправления)

routes (маршруты)

cod_route (код, суррогатный ключ)
name_route (название маршрута)

points_routes (связь между пунктами и маршрутами)

cod_point (код пункта, внешний ключ)
cod_route (код маршрута, внешний ключ)

trips (рейсы)

cod_trip (код рейса, суррогатный ключ)
week_day (день недели)
hour (часы)
minute (минуты)
cod_route (код маршрута)
cod_bus (код автобуса, назначенного на данный рейс)
tickets (количество проданных билетов)

Пункты и маршруты имеют связь "Многие-ко-Многим" (через каждый пункт может проходить несколько маршрутов и каждый маршрут имеет несколько остановок). Для этого служит таблица-связка points_routes.
Сущность trips (рейсы) связывает сущности Маршруты и Автобусы, дополняя их такими важными атрибутами как время отправления. Здесь же фиксируется и количество проданных билетов на каждый рейс (после отправления рейса поле обнуляется).
Дни недели в trips - числа от 1 до 7, где 1 - понедельник, 2 - вторник и т.д.
Номера и марки автобусов, названия маршрутов, названия населенных пунктов уникальны
Допустимо наличие маршрутов, не используемых ни в одном рейсе. Могут быть населённые пункты, не используемые ни в одном маршруте, маршруты, в которые ещё не включены никакие пункты, автобусы, не задействованные ни в одном рейсе. Аналогично, в базе может содержаться марка автобуса, но не быть ни одного автобуса такой марки.

Я смог написать вот это
SELECT name_route, week_day, hour, minute
FROM routes INNER JOIN trips ON routes.cod_route=trips.cod_route
where (hour*60+minute+week_day*1440)=
(select min(hour*60+minute+week_day*1440) from trips where (hour*60+minute+week_day*1440)>=
(select min(hour*60+minute+week_day*1440) from trips where cod_trip=50) and cod_trip<>50 )

не могу понять, как вывести маршрут, который будет идти после последнего на текущей неделе.
Т.е. если маршрут с номером 50 будет последним в этой неделе, то нужно вывести первый на следующей
...
Рейтинг: 0 / 0
17.03.2017, 08:35
    #39421172
mishuto-kostya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
...
Рейтинг: 0 / 0
17.03.2017, 08:50
    #39421175
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
mishuto-kostyaрасценки за километрНе на то расценки объявляешь.
...
Рейтинг: 0 / 0
17.03.2017, 09:07
    #39421183
new_igor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
управжения по sql

случайно не оттуда задачка? уж больно стиль заданий похож.
...
Рейтинг: 0 / 0
17.03.2017, 09:20
    #39421195
mlc
mlc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
mishuto-kostya,

Тебе сюда Студентам, желающим помощи , потом сюда Работа
...
Рейтинг: 0 / 0
17.03.2017, 09:48
    #39421220
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
mishuto-kostya,

lag/lead
...
Рейтинг: 0 / 0
17.03.2017, 11:19
    #39421317
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
Вашу мать!
Ни вам "пожалуйста", нихрена..

Куда катится мир...
...
Рейтинг: 0 / 0
17.03.2017, 11:44
    #39421348
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
Тестировать лень. Будем считать за идею...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
WITH
t0 AS (
  SELECT
    1 AS g,
    tp.*
  FROM
    trips tp
  UNION ALL
  SELECT
    2 AS g,
    tp.*
  FROM
    trips tp
),
t1 AS (
  SELECT
    g,
    cod_trip,
    LEAD( cod_trip ) OVER ( ORDER BY g, week_day, hour, minute ) AS cod_trip_n
  FROM
    t0
)
SELECT
  tp.*
FROM
  t1
  INNER JOIN trips tp ON (
        tp.cod_trip = t1.cod_trip_n )
WHERE
      t1.cod_trip = 50
  AND t1.g = 1
...
Рейтинг: 0 / 0
17.03.2017, 17:00
    #39421764
mishuto-kostya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
new_igor управжения по sql

случайно не оттуда задачка? уж больно стиль заданий похож.
new_igor,

с универского сайта задачка, было любопытно решить, но не осилил

envmishuto-kostya,

lag/lead
env,

простите, не знаю что это.

--Eugene--Вашу мать!
Ни вам "пожалуйста", нихрена..

Куда катится мир...
--Eugene--,

ты сюда зашел высказать свое никчемное мнение? я и раньше заметил насколько здесь гнилые люди попадаются

Руслан ДамировичТестировать лень. Будем считать за идею...

Руслан Дамирович,

не уверен, сработает ли with, не сильно понимаю систему, но спасибо за идею, попробую
...
Рейтинг: 0 / 0
17.03.2017, 17:09
    #39421776
mishuto-kostya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
mlc,

Хотелось бы решить исключительно из любопытства, разобраться так сказать. Семестр тот я уже закончил давно (если нужны будут пруфы, то предоставю), а задачка осталось не решенной. На универском сайте задачу смогли решить лишь 5% отправивших, потому и стало любопытно, что там за задача. А если точнее 12 человек.
...
Рейтинг: 0 / 0
17.03.2017, 17:26
    #39421794
mishuto-kostya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
Вот пример теста, который у меня не проходит. Запрос должен вывести строку с рейсом №4
...
Рейтинг: 0 / 0
18.03.2017, 08:38
    #39422045
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка SQL
Как вариант -- добавляй сразу и маршруты на следующий понедельник
select * from trips
union all
select ..., 8 week_day from trips
where week_day=1 and cod_trip != 50
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задачка SQL / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]