分组依据如何在子查询中工作?
How does group by work in sub queries?
当涉及到 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'
错误。实现此目标的最佳方法是什么,以便我得到如下所示的 table:
| Total Mean | Number |
|:----------:|:------:|
| 224.5 | 1 |
| 208.5 | 2 |
| 171.9 | 3 |
| 120.9 | 4 |
您的派生 table 缺少别名。
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;
当涉及到 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'
错误。实现此目标的最佳方法是什么,以便我得到如下所示的 table:
| Total Mean | Number |
|:----------:|:------:|
| 224.5 | 1 |
| 208.5 | 2 |
| 171.9 | 3 |
| 120.9 | 4 |
您的派生 table 缺少别名。
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;