SQL选择带有子查询和数据透视表行到列的前20条记录

时间:2018-12-10 00:54:25

标签: mysql

输入:我有一个表格,其中列出了帐户及其每天的支出。为简单起见,我们将说该表具有以下字段:account,account_id,日期,销售。

输出:最终目标是获取前25个帐户的报告,并列出前8周的销售情况。该报告将包含account,account_id,然后是前8周中的每8个附加列,每列的销售量总计。

问题1:我在获取前25个帐户时遇到问题。我编写了一个子查询来汇总每个帐户的上个月销售额,并通过使用带in运算符的where子句来获得前25名,但是子查询不支持inp运算符。

问题2:我不确定如何将前8周分成几列。

select
        yearweek(date,1) as year_week
        ,date_add(makedate(year(date),1), interval week(date,1) week) as first_day_of_week
        ,account_id
        ,account
        ,sum(sales) as total_sales
from daily_sales
where date >= date_sub(curdate(), interval 8 week)
and account_id in (  select
                                    account_id
                                from daily_sales
                                where year(date)=2018 and month(date)=11
                                group by 1
                                limit 25)
group by 1,2,3,4;

0 个答案:

没有答案