Sql 如何从内部查询在外部查询中执行算术运算
我是SQL新手,正在尝试在access中构建查询。我需要选择比平均比率小的两列的比率。 我能够首先对数据进行分组,以获得每列的总数。我还能够在以下查询中获得每个组的比率,该查询有效:Sql 如何从内部查询在外部查询中执行算术运算,sql,ms-access,Sql,Ms Access,我是SQL新手,正在尝试在access中构建查询。我需要选择比平均比率小的两列的比率。 我能够首先对数据进行分组,以获得每列的总数。我还能够在以下查询中获得每个组的比率,该查询有效: SELECT col1, Ratio FROM ( SELECT ID, SUM(col3)/SUM(col4) AS Ratio FROM table1 GROUP BY ID ) AS Ratios INNER JOIN table2 ON Ratios.ID=table2.I
SELECT col1, Ratio
FROM (
SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
) AS Ratios
INNER JOIN table2
ON Ratios.ID=table2.ID
但是,我只想显示那些小于平均比率的比率。我尝试了另一种方法,得到了一条消息:不能在WHERE子句中聚合函数
SELECT col1, Ratio
FROM (
SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
) AS Ratios
INNER JOIN table2
ON Ratios.ID=table2.ID
WHERE Ratio<AVG(Ratio)
谁能帮我看看我做错了什么,我已经为此工作了几个小时,老实说,我在这里不知所措。这是Access中一个痛苦的问题。您可以这样做:
SELECT col1, Ratio
FROM (SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
) AS Ratios INNER JOIN
table2
ON Ratios.ID = table2.ID
WHERE Ratio < (select AVG(Ratio)
from (SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
) as t
);
谢谢你,戈登,成功了!我可以使用HAVING子句来构建这个查询吗?再次感谢!
SELECT col1, Ratio
FROM (SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
HAVING SUM(col3)/SUM(col4) < (select AVG(Ratio)
from (SELECT ID, SUM(col3)/SUM(col4) AS Ratio
FROM table1
GROUP BY ID
) as t
)
) AS Ratios INNER JOIN
table2
ON Ratios.ID = table2.ID;