У меня есть таблица продаж моих торговых агентов, по кварталам:
Agent Quarter Sales
----------------------------
Alex Andersen 2011Q1 358
Alex Andersen 2011Q2 289
Alex Andersen 2011Q3 27
Alex Andersen 2011Q4 2965
Brian Blogg 2010Q3 277
Brian Blogg 2010Q4 123
Brian Blogg 2011Q1 783
Brian Blogg 2011Q2 0
Christy Cliff 2011Q2 777
Christy Cliff 2011Q3 273
Christy Cliff 2011Q4 111
Christy Cliff 2012Q1 901
Какой самый простой и эффективный запрос для получения самого раннего квартала каждого агента и продаж за этот квартал?
Легко узнать, «Каков первый квартал каждого агента?»:
SELECT agent, min(quarter) FROM salestable GROUP BY agent
Но это не включает цифры продаж, поэтому я решил сделать объединение:
SELECT agent, sales
FROM salestable s1
JOIN
(
SELECT agent AS e, MIN(quarter) AS q
FROM salestable
GROUP by employee
) AS q1 ON q1.e=s1.agent AND q1.mq=s1.quarter
Но это недопустимо медленно для моего набора данных. Если бы я мог использовать курсор, это заняло бы всего один проход через таблицу, но при использовании запроса, похоже, требуется соединение. Это правильно?