2016-04-21 6 views
0

У меня есть таблица MyTable, которая выглядит какВозврат отдельных строк после того, как в среднем по группе

periodEndDate TotTermLoans companyName 
2009-09-30 NA   ABB 
2009-09-30 5.38   ABB 
2009-09-30 4.34   ABB 
2009-12-31 5.6   ABB 
2009-12-31 5.6   ABB 
2009-12-31 5.6   ABB 
2010-03-31 5.47   ABB 
2010-03-31 5.47   ABB 
2010-03-31 5.0   ABB 

Хочу группы в год и получить среднее TotTermLoans за каждый год, но с моим запросом я получаю повторяющиеся строки :

SELECT YEAR(periodEndDate), AVG(TotTermLoans), companyName 
FROM MyTable 
GROUP BY YEAR(periodEndDate) 

который дает

YEAR(periodEndDate) AVG(TotTermLoans) companyName 
    2009     5.304    ABB 
    2009     5.304    ABB 
    2009     5.304    ABB 
    2010     5.313    ABB 
    2010     5.313    ABB 
    2010     5.313    ABB 

Я бы например

YEAR(periodEndDate) AVG(TotTermLoans) companyName 
    2009     5.304    ABB 
    2010     5.313    ABB 

Должен ли я использовать подзапросы для этого? Спасибо

+1

включают 'companyname' в' group by'. –

+0

Заданный вами запрос должен возвращать только одну строку в год. Я не понимаю вопроса. –

ответ

3
SELECT   YEAR(periodEndDate), AVG(TotTermLoans), companyName 
FROM    MyTable 
GROUP BY   YEAR(periodEndDate), companyName 

DISTINCT ключевое слово может также использоваться на SELECT заявления для удаления дублированных результатов.

+0

Любая причина для «отличных»? похоже, что 'Group By' должен полностью обрабатывать вещи. – ander2ed

+0

Справедливая точка. Плохая привычка, я думаю, но полезное ключевое слово SQL, чтобы знать, тем не менее. – William

+0

Очень полезно. – ander2ed