2012-04-10 7 views

Odpowiedz

16

To jest naprawdę prymitywny agregat SUM(). Zalecam przeczytanie dokumentacji RDBMS na temat funkcji agregujących i GROUP BY, ponieważ jest to dość elementarne.

SELECT 
    SUM(Tax) AS sumtax, 
    State 
FROM table 
GROUP BY State 
/* Looks like you want descending order */ 
ORDER BY SUM(Tax) DESC 

pamiętać, że niektóre RDBMS (MySQL, na przykład) będzie można użyć aliasu kolumny w ORDER BY jak w:

ORDER BY sumtax DESC 

... gdzie inni (jak SQL Server Jeśli dobrze pamiętam poprawnie) nie będzie i musisz również użyć wartości zagregowanej.

Edytuj:Właśnie sprawdziłem i faktycznie SQL Server wydaje się zezwalać na aliasy w ORDER BY. Na pewno nie można użyć aliasu w GROUP BY ...

+0

Jak mogę uzyskać "ID"? dzięki – dadan

+0

@dadan Identyfikator nie jest unikalny dla każdego agregatu 'SUM()', ponieważ wiele wartości identyfikatora stanu jest reprezentowanych w każdym 'SUM()'. (na przykład suma "TX" ma wartość 0, 1) Powinieneś zadać pytanie, demonstrujące dokładnie to, czego potrzebujesz. –

+0

dziękuję za odpowiedź, znalazłem rozwiązanie dla mojego problemu, używając 'over partition by' na oracle – dadan

Powiązane problemy