[英]SQL SUM and Average Sale by Years
逐年分组以获取每年的结果记录。 按销售额递减的顺序对其进行排序,并将结果限制为1行,这样您就可以得出销售额最高的年份。
此外,我们使用AVG
的分析版本来获取每年记录中所有金额的AVG
(最后我们只显示其中一项)。 从查询中删除最后一行(即仅提取子句)以查看其工作方式。
select
year,
sum(total_sales) as sum_of_year,
avg(sum(total_sales)) over () as avg_sum
from sales_report
group by year
order by sum(total_sales) desc
fetch first 1 row only;
SQL提琴: http ://sqlfiddle.com/#!15/ fee30/5
这是标准的SQL,但并非在每个DBMS中都有效。 一些DBMS更加符合标准,而另一些则更少。 有些使用TOP
或LIMIT
或其他方法仅获得第一行。 还有一些甚至没有分析功能。
这是您问题的第二部分的解决方案。 这将计算所有年份的平均销售总和:
SELECT avg(sum_sales)
FROM (
SELECT year as year, sum(total_sales) as sum_sales
FROM sales
GROUP BY year
) AS T;
为了获得销售最高的年份,您可以按以下顺序使用订单和限制来扩展该年份:
SELECT year, sum_sales
FROM (
SELECT year as year, sum(total_sales) as sum_sales
FROM sales
GROUP BY year) AS T
ORDER BY sum_sales desc
LIMIT 1;
select rank()over ( order by total_sale) rnk,
year, total_sale, avg_sale
from (select year,
sum(total_sales) total_sale,
avg(total_sales) avg_sale
from sales_report group by year)
该查询提供每年的排名。 rnk = 1是销售最高的年份。 通过说rnk = 1,您可以获取最高销售额的当年的总销售额和平均销售额。 希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.