Return 使用 AVG 时多行
Return multiple rows when using AVG
为什么这个 SQL 查询 return 只有一个结果?
select data_value-AVG(data_value) from data
虽然预期结果是多行,但每个行的平均值都不同 data_value
。
您不能将单个列(data_value
,在本例中)同时视为分组列和非分组列。您必须从不同的查询中获取它们并加入它们:
SELECT data_value - avg_data_value
FROM data
CROSS JOIN (SELECT AVG(data_value) AS avg_data_value
FROM data) agg
如果您不想获得相同的 data_value
两次,您可以在查询中添加一个 distinct
修饰符:
SELECT DISTINCT data_value - avg_data_value
FROM data
CROSS JOIN (SELECT AVG(data_value) AS avg_data_value
FROM data) agg
为什么这个 SQL 查询 return 只有一个结果?
select data_value-AVG(data_value) from data
虽然预期结果是多行,但每个行的平均值都不同 data_value
。
您不能将单个列(data_value
,在本例中)同时视为分组列和非分组列。您必须从不同的查询中获取它们并加入它们:
SELECT data_value - avg_data_value
FROM data
CROSS JOIN (SELECT AVG(data_value) AS avg_data_value
FROM data) agg
如果您不想获得相同的 data_value
两次,您可以在查询中添加一个 distinct
修饰符:
SELECT DISTINCT data_value - avg_data_value
FROM data
CROSS JOIN (SELECT AVG(data_value) AS avg_data_value
FROM data) agg