sql:如何选择客户营业额最大的年份和月份?

r6hnlfcb  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(592)

我需要列出前10名客户的平均每月交易额营业额,在额外的一栏,指出年和月最高的月营业额的客户。
我在第一部分列出了月平均交易额前十名的客户。

Select column1, AVG(Case when when column1="x" then column2
                      when column1="y" then column2
                      when column1="z" then column2
                      when column1="q" then column2 End)/12 [AVG]
from table1
Group by column1
Order by AVG DESC;

如何做任务的第二部分-在附加栏中指明客户月营业额最高的年份和月份?

ivqmmu1c

ivqmmu1c1#

这听起来像是聚合和窗口函数。众所周知,日期函数依赖于数据库,但其思想是:

select ymc.*
from (select year(r_date) as yyyy, month(r_date) as mm, c_id, sum(amount) as amount,
             row_number() over (partition by c_id order by sum(amount) desc) as seqnum
      from t
      group by year(r_date), month(r_date), c_id
     ) ymc
where seqnum = 1;

并非所有数据库都支持 year() 以及 month() 但它们都有相似的功能。因此,您可能需要修改数据库使用的内容。

enxuqcxy

enxuqcxy2#

使用下面的查询,下面的查询在为oracle,标记您的数据库,以便可以提供适当的查询。

select c_id, to_char(r_date, 'MM'), to_char(r_date, 'YYYY'), max(amount)
group by c_id, to_char(r_date, 'MM'), to_char(r_date, 'YYYY');

相关问题