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