我有下表
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
答案 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 )进行分组。按产品订购行号。