在SQL中仅使用一次选择的每X行的平均值

时间:2018-09-17 18:59:39

标签: sql sql-server select average

我有下表

product | price
------------------
 A      | 10
 B      | 20
 C      | 45
 D      | 47
 E      | 10
 F      | 60
 G      | 15
 H      | 15
 I      | 90

我需要得到类似(对于X = 3):

products  |  avg
------------------
 A        |  25    -- 10+20+45
 D        |  39    -- 47+10+60
 G        |  40    -- 15+15+90

这只能使用一个SELECT命令来完成!

是否可以这样做? DBMS:MSSQL

2 个答案:

答案 0 :(得分:3)

如果您希望基于名称将它们分成3组,则可以使用row_number()分配一个数字,然后进行汇总:

select min(product), avg(price)
from (select t.*, row_number() over (order by product) as seqnum
      from t
     ) t
group by (seqnum - 1) / 3;  -- SQL Server does integer division

答案 1 :(得分:0)

由于您还没有尝试过任何东西,因此,我将为您提供入门的一般策略。

按行号除以3(或 x )进行分组。按产品订购行号。