Итак, простой ответ: это зависит. Mysql позволяет это, Vertica нет.
На самом деле есть допустимый вариант использования для пропуска, и это когда вы уже выбираете сказать с помощью MIN ().
Вот фактический пример для отслеживания событий. Imaging у вас есть кредит и покупки событий.
Для простоты мы говорим, что a = credit, b, c, d - это какое-то событие покупки, а время отслеживается по порядковому номеру. Теперь вы хотите узнать дату первой покупки после каждого кредита. У нас также бывает только один клиент 0:
create table events (user_id int ,created_at int, event varchar(255));
insert into events values (0,0, 'a');
insert into events values (0,1, 'b');
insert into events values (0,2, 'c');
insert into events values (0,3, 'a');
insert into events values (0,4, 'c');
insert into events values (0,5, 'b');
insert into events values (0,6, 'a');
insert into events values (0,7, 'a');
insert into events values (0,8, 'd');
mysql> SELECT user_id, MAX(purchased) AS purchased, spent, event FROM (SELECT e1.User_ID AS user_id, e1.created_at AS purchased, MIN(e2.created_at) AS spent, e2.event AS event FROM events e1, events e2 WHERE e1.user_id = e2.user_id AND e1.created_at <= e2.created_at AND e1.Event = 'a' AND e2.Event != 'a' GROUP BY e1.user_id, e1.created_at) e3 GROUP BY user_id, spent;
+---------+-----------+-------+-------+
| user_id | purchased | spent | event |
+---------+-----------+-------+-------+
| 0 | 0 | 1 | b |
| 0 | 3 | 4 | c |
| 0 | 7 | 8 | d |
+---------+-----------+-------+-------+
3 rows in set (0.00 sec)
хорошо выглядит в mysql, не работает в vertica:
ОШИБКА 2640: Столбец "e2.event" должен появляться в предложении GROUP BY или использоваться в статистической функции
Если я опускаю столбец события, он работает в обоих случаях, но на самом деле я хочу знать, какое конкретное значение события имело для строки, выбранной min.
Так что мой ответ заканчивается запросом комментария :) Есть идеи?