2016-08-04 7 views
-1

Ich muss Statistiken mehrere Spalten, die folgende ist mein Schreiben:SQL: Wie verwenden Sie die analytische Funktion für mehrere Spalten in Oracle?

with 
    t_suml1 as(select id, date, sum(list1) result from table group by id,date), 
    t_avgl2 as(select id, date, avg(list2) result from talbe group by id,date), 
    t_countl3 as(select id, date, count(list3) result from table group by id,date) 
select s.id, s.date, s.result, t_avgl2.result, t_countl3.result 
    from t_suml1 s 
    inner join t_avgl2 a on s.id=a.id and s.date=a.date 
    inner join t_countl3 c on s.id=c.id and s.date=c.date 

Gibt es eine andere Möglichkeit, dies zu tun?

+1

warum nicht verwenden select id, Datum, Betrag (list1), mittlere (list2), count (list3) ergeben sich aus Tabelle Gruppe von ID, Datum? Du hast 3 verschiedene Tische? – adam

Antwort

0

Sorry, das ist eine dumme Frage.

select id, date,sum(list1),avg(list2), count(list3) result from table group by id,date 
0

Oracle Analytic functions

select s.id, s.date, s.result, t_avgl2.result 
    ,sum(list1) over (partition by id, date) 
    ,avg(list1) over (partition by id, date) 
    ,count(list1) over (partition by id, date) 
--totals: 
    ,sum(list1) over() as total_sum 
    ,avg(list1) over() as total_avg 
    ,count(list1) over() as total_cnt 
    from t_suml1 s 
    inner join t_avgl2 a on s.id=a.id and s.date=a.date 
    inner join t_countl3 c on s.id=c.id and s.date=c.date