1. SQL / Говнокод #16293

    −168

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    SELECT p1.Id, p1.Type, p1.Price FROM `price-log` AS p1
       JOIN (
       SELECT Id, Type, MIN(Change_date) AS Change_date FROM `price-log`
       WHERE Change_date > DATE_ADD(NOW(), INTERVAL -1 MONTH) GROUP BY Id, Type) AS p2 ON
       p1.Id = p2.Id AND p1.Type = p2.Type AND p1.Change_date = p2.Change_date;

    После восстановления из бэкапов изучал процедуры. Часть одной из них.

    Запостил: Nerfair, 09 Июля 2014

    Комментарии (7) RSS

    • запрос без джойна - не запрос
      Ответить
      • можно, конечно, обойтись без джойна - через rank() over (partition by id, type order by change_date) as rn
        и всё это обернуть в внешний запрос, чтобы where rn = 1 отфильтровать

        но ведь получится-то тоже самое по времени работы, если не хуже
        и учитывая, что это, скорее всего, mysql, то там и подавно нет таких благ

        какие ваши доказательства?
        Ответить
        • > какие ваши доказательства?

          пацаны не оценят
          Ответить
        • не всем дано в оконные функции
          Ответить
    • автор, а что именно тебе не понравилось?
      что Change_date может быть убогим типом без информации о времени?
      Ответить
      • Я - не автор, но мне не нравится, что Id в таблице - нихера не уникальное поле, а больше похоже на ключ на внешнюю таблицу...
        Ответить
        • Мопед не мой, я только обьяву разместил
          Ответить

    Добавить комментарий