• Ниже в табличной форме представлен фрагмент базы данных «Отправление поездов дальнего следования»:
    Пункт назначения Категория поезда Время в пути Вокзал
    Адлер фирменный 29:46 Казанский
    Адлер скорый 38:35 Курский
    Адлер фирменный 25:30 Казанский
    Адлер скорый 39:13 Курский
    Алма-Ата скорый 102:22 Павелецкий
    Амстердам скорый 36:40 Белорусский
    Анапа пассажирский 35:37 Белорусский
    Архангельск скорый 20:46 Ярославский
    Архангельск пассажирский 46:30 Ярославский
    Архангельск скорый 21:25 Белорусский
    Астана скорый 58:00 Казанский
    Астрахань скорый 27:56 Павелецкий

    Сколько записей в данном фрагменте удовлетворяют условию

    (Категория поезда = «скорый») ИЛИ (Вокзал = «Казанский»)?

    В ответе укажите одно число — искомое количество записей.

Ответы 6

  • Ах да забыл, 1 вычитается за счет того что стоит логическое ИЛИ
    • Автор:

      alvarez
    • 6 лет назад
    • 0
  • Вы можете использовать любой алгоритм. Я использовал тот, который реально реализован в системах запросов.
    • Автор:

      makhi
    • 6 лет назад
    • 0
  • На самом деле запросы проходят оптимизацию. Вот один из таких алгоритмов для связки "ИЛИ". 1) Делаем выборку по первому из условий. 2) Делаем выборку по второму из условий. 3) Смотрим, какая из выборок дала МЕНЬШЕЕ количество записей и в ней проверяем выполнение второго условия. 4) Вычитаем из суммы найденных по 1) и 2) записей количество, найденное по 4)
  • Собственно, именно он у меня в решении и реализован.
    • Автор:

      zion46
    • 6 лет назад
    • 0
  • Такой алгоритм относится к категории "ленивых", когда "лень" просматривать в каждой записи все выражение. А Вы предложили "жадный" алгоритм. О ленивых и жадных алгоритмах Вы можете почитать в Интернет.
  • Категория поезда = «скорый» - таких записей у нас 8Вокзал = «Казанский» - таких записей у нас 3Связка у нас по "ИЛИ", поэтому достаточно чтобы выполнилось только одно из условий. Но если выполнились оба, то у нас такая запись учтена дважды (в каждом из условий). Найдем количество записей, в которых выполнились оба условия одновременно - их 1.Окончательно 8+3-1=10 записей.Ответ: 10
    • Автор:

      flyby
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years