Эффективно группировать по столбцам
SELECT date, id, sum(revenue)
FROM table
WHERE date between '2013-01-01' and '2013-01-08'
GROUP BY date, id
HAVING sum(revenue)>1000
Возвращает строки с доходом>1000.
SELECT date, id, sum(revenue)
FROM table
WHERE date between '2013-01-01' and '2013-01-08'
AND id IN (SELECT id FROM table where date between '2013-01-01' and '2013-01-08' GROUP BY id HAVING sum(revenue)>1000)
GROUP BY date, id
Возвращает строки для идентификаторов, чей общий доход за период даты составляет> 1000 по желанию. Но этот запрос намного медленнее. Есть ли более быстрый способ сделать это?
2 ответа
Это не MySQL, это Vertica;)
Крис, какая проекция и order by
вы используете в CREATE TABLE
???
Вы пытаетесь использовать database designer
см. http://my.vertica.com/docs/6.1.x/HTML/index.htm
Убедитесь, что у вас есть индексы на date
а также id
столбцы, и попробуйте этот вариант:
select t.date, t.id, sum(t.revenue)
from table t
inner join (
select id
from table
where date between '2013-01-01' and '2013-01-08'
group by id
having sum(revenue) > 1000
) ts on t.id = ts.id
where t.date between '2013-01-01' and '2013-01-08'
group by t.date, t.id