У меня есть таблица:Группировка с операндами
mysql> desc kursy_bid;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| datetime | datetime | NO | PRI | NULL | |
| currency | varchar(6) | NO | PRI | NULL | |
| value | varchar(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Я хотел бы выделить несколько строк из таблицы, сгруппированные по некоторым временным интервалом (может быть один день), где у меня будет первый ряд и последний строка группы, максимальная (значение) и мин (значение).
Я пробовал:
select
datetime,
(select value order by datetime asc limit 1) open,
(select value order by datetime desc limit 1) close,
max(value),
min(value)
from kursy_bid_test
where datetime > '2009-09-14 00:00:00'
and currency = 'eurpln'
group by
month(datetime),
day(datetime),
hour(datetime);
но вывод:
| open | close | datetime | max(value) | min(value) |
+--------+--------+---------------------+------------+------------+
| 1.4581 | 1.4581 | 2009-09-14 00:00:05 | 4.1712 | 1.4581 |
| 1.4581 | 1.4581 | 2009-09-14 01:00:01 | 1.4581 | 1.4581 |
Как вы видите, открываются и закрываются одно и то же (но они не должны быть). Какой должен быть запрос делать то, что я хочу?
Извините, но это очень далеко от шляпы я хочу, ты прочитал весь вопрос? :) Именование coulmns с «ключевыми словами» неплохо, не создает никаких проблем :) – 2009-09-15 12:33:08
И - дата создания (datetime) = '2009-09-14' медленнее (не использует индексы), чем datetime> '2009-09-14' – 2009-09-15 12:34:38
Если вы собираетесь использовать форматирование, сделайте его доступным для чтения. –