我有一个SQL表,其中包含不同类别产品(例如水果,蔬菜,乳制品)的月度价格。 我想在同一查询中计算特定类别以及当月所有产品的运行月平均值。
所以结合起来:
Select date, avg(price) group by date where category = 'Fruit'
Select date, avg(price) group by date
是否可以使用OVER&Partition(或其他任何方式)
修改
|日期|项目|类别|价格|
| Jan |香蕉|水果10 |
| Jan |土豆|蔬菜| 20 |
那么输出将是
日期|水果平均价|整体平均|
一月| 10 | 15
为弄乱表而事先致歉,但这是针对另一个线程的。
谢谢
答案 0 :(得分:0)
为什么需要结束?
Select date, category , avg(price) group by date, category
答案 1 :(得分:0)
尝试使用
Select extract(year from date)||extract(month from date) as month,
category, avg(price) as avg_price
from sales
group by month, category
P.S。在某些数据库系统中可能不允许使用别名month
,在这种情况下,group by列表中的{替换为extract(year from date)||extract(month from date)
。连接运算符也可能不同,只要遇到这种情况,就用加号(||
)替换管道(+
)。
答案 2 :(得分:0)
如果您希望每月 一行,并且数据有多行,则需要汇总:
select date_trunc('month', date) as month,
avg(price) as avg_per_month,
avg(avg(price)) over (order by date_trunc('month', date))
from t
where category = 'Fruit'
group by date_trunc('month', date)
order by date_trunc('month', date);
如果您每月只有一排,那么您可以这样做:
select date, price,
avg(price) over (order by date)
from t
where category = 'Fruit'
order by date;