2015-11-20 60 views
0

當談到SQL中的高級聚合函數時,我感到非常不穩定。我有這個查詢:在子查詢中如何工作?

SELECT Name, avg(Value) Mean, Number 
From Table1 
where Category = 'Time' 
group by Name, Number; 

這是一個相當明顯的事情。但在這種情況下,看起來像這樣:

| Name | Mean | Number | 
|:------:|:-----:|:------:| 
| Thing1 | 112.6 | 1  | 
| Thing2 | 111.9 | 1  | 
| Thing1 | 109.1 | 2  | 
| Thing2 | 99.4 | 2  | 
| Thing1 | 91.8 | 3  | 
| Thing2 | 80.1 | 3  | 
| Thing1 | 73.7 | 4  | 
| Thing2 | 47.2 | 4  | 

現在我想得到這些特定數字的平均值的總和。

我的思維過程會做這樣的事情:

SELECT SUM(Mean) Total Mean, Number 
FROM (SELECT Name, avg(Value) Mean, Number 
    FROM Table1 
    WHERE Category = 'Time' 
    GROUP BY Name, Number) 
GROUP BY Number; 

但由於很可能是明顯的,我得到一個Incorrect syntax near the keyword 'group'錯誤。什麼是實現這個目標的最好方法,以便我得到一個如下所示的表格:

| Total Mean | Number | 
|:----------:|:------:| 
| 224.5  | 1  | 
| 208.5  | 2  | 
| 171.9  | 3  | 
| 120.9  | 4  | 

回答

3

您的派生表缺少別名。

SELECT SUM(Mean) Total Mean, Number 
FROM (SELECT Name, avg(Value) Mean, Number 
    FROM Table1 
    WHERE Category = 'Time' 
    GROUP BY Name, Number) t --alias for the derived table 
GROUP BY Number; 
+0

哦,我的上帝,真的那麼容易大聲笑。我感到非常愚蠢。感謝您的幫助!這解決了它! – David