这是我的postgresql语句。
select sum("Color") as color,round(avg("Color")) as avg_color
from "color_table"
如何设置平均零件的条件?
我做了一些研究,发现interval
似乎很有用。但是我不知道在哪里设置条件。
我只想获取trandate
从现在开始过去90天内的颜色平均值。
答案 0 :(得分:2)
这是一种方法:
SELECT
SUM(Color) AS color,
ROUND(AVG(CASE WHEN trandate < NOW() - INTERVAL '90 DAYS'
THEN Color END)) AS avg_color
FROM "color_table";
这将您的要求解释为想要trandate
超过90天的平均记录。相反,如果您想在最近90天之内 ,则逆转不平等。
如果您使用的是Postgres 9.4或更高版本,则还可以使用FILTER
子句:
SELECT
SUM(Color) AS color,
ROUND(AVG(Color) FILTER (WHERE trandate < NOW() - INTERVAL '90 DAYS')) AS avg_color
FROM "color_table";
答案 1 :(得分:0)
您可以尝试以下操作
with cte as
( select SUM(Color) AS color,0 as avg_color
FROM "color_table"
union all
select 0, avg(Color ) FROM "color_table"
where trandate < NOW() - INTERVAL '90 DAYS'
) select max(color) as color ,max(avg_color) as avg_color from cte