У меня есть некоторый код SQL, который вставляет значения из другой (не основанной на SQL) системы. одно из значений, которые я получаю, это метка времени.
я могу получить несколько вставок с одинаковой отметкой времени (хотя и другими значениями для других полей).
Моя проблема в том, что я пытаюсь, чтобы первая вставка происходила каждый день (на основе метки времени), начиная с определенного дня (то есть, дайте мне первую вставку каждого дня с 28 января 2007 года ...)
мой код для получения первой отметки времени каждого дня выглядит следующим образом:
SELECT MIN(my_timestamp) AS first_timestamp
FROM my_schema.my_table
WHERE my_col1 = 'WHATEVER'
AND my_timestamp > timestamp '2010-Jul-27 07:45:24' - INTERVAL '365 DAY'
GROUP BY DATE (my_timestamp);
Это дает мне список доступных времен. Но когда я присоединяюсь к этим временам, я могу получить несколько строк, так как в этот раз есть много строк. Таким образом, за 365 дней я могу получить 5000 строк (я могу вставлять 100 строк в 00:00:00 каждый день).
Предполагая, что в приведенном выше примере my_table содержит столбцы my_col1 и my_col2, как я могу получить ровно 365 строк, содержащих my_col1 & my_col2? не имеет значения, к какой строке я вернусь, если на дату есть несколько строк; любой строки будет достаточно.
это странный вопрос. общая проблема заключается в том, что, учитывая временную метку, как можно получить 1 строку на временную метку, даже если есть несколько строк с указанной временной меткой (при условии, что нет другого приоритета)?
спасибо за помощь заранее.
EDIT:
Итак, скажем, например, эта таблица имеет следующие столбцы: my_col1, my_col2 и my_timestamp.
Вот примеры значений (в порядке my_col1 - my_col2 - my_timestamp):
- 'my_val1' - 10 - '2010-07-01 01: 01: 01'
- 'my_val2' - 11 - '2010-07-01 01: 01: 01'
- 'my_val3' - 12 - '2010-07-01 01: 01: 01'
- 'my_val4' - 13 - '2010-07-01 01: 01: 02'
- 'my_val5' - 14 - '2010-07-02 01: 01: 01'
- 'my_val6' - 15 - '2010-07-02 01: 01: 01'
- 'my_val7' - 16 - '2010-07-03 01:01:01'
в конце я хотел бы только 3 строки, 1 с отметкой времени с '2010-07-01 01:01:01', одна с '2010-07-02 01:01:01' и одна с '2010-07-03 01:01:01'. третий - простой, поскольку с последней отметкой времени есть только 1 строка. но первые два хитрые. sql, который я разместил выше, будет игнорировать строку с 'my_val4'.
мне нужен запрос, который вернет мне все столбцы, а не только даты.
как мне получить sql, чтобы дать мне либо первое, либо последнее из значений, которые будут соответствовать этой отметке времени (это не имеет значения в любом случае. Мне просто нужно получить совпадение с отметкой времени 1-го первого дня)?