【发布时间】:2023-02-14 18:15:11
【问题描述】:
我确定这个问题已在其他地方得到解答,但我找不到。
我有一张发票表
| id | company | index | date_sent | amount |
|---|---|---|---|---|
| 1 | Com1 | 1 | 2022-01-01 | 100 |
| 2 | Com1 | 2 | 2022-02-01 | 100 |
| 3 | Com1 | 3 | 2022-03-01 | 100 |
| 4 | Com1 | 4 | 2022-04-01 | 100 |
| 5 | Com2 | 1 | 2022-02-01 | 100 |
| 6 | Com2 | 2 | 2022-03-01 | 100 |
| 7 | Com2 | 3 | 2022-04-01 | 100 |
| 8 | Com3 | 1 | 2022-01-01 | 100 |
| 9 | Com3 | 2 | 2022-02-01 | 100 |
| 10 | Com4 | 1 | 2022-01-01 | 100 |
(这里的索引基本上是通过RANK() OVER (PARTITION BY co ORDER BY date_sent) as index添加的)
我想退回拥有超过 3 张发票的公司、这 3 张发票的总和以及第 3 张发票的发送日期。
比如上面的数据,返回的数据应该是:
| company | date_3rd | amount_sum_3 |
|---|---|---|
| Com1 | 2022-03-01 | 300 |
| Com2 | 2022-04-01 | 300 |
到目前为止,我有:
select company,
(select sum(amount) from grouped_invs.amount_sum_3 amount) as amount_sum_3,
from (
select company,
array_agg(invoices.amount order by invoices.index limit 3) amount_sum_3,
from `data` invoices
group by invoices.company
having count(*) => 3
) grouped_invs
这给了我
| company | amount_sum_3 |
|---|---|
| Com1 | 300 |
| Com2 | 300 |
但我不知道如何从那里发送第三个日期。
提前致谢
【问题讨论】:
标签: google-bigquery