按外键和日期对数据进行分组,按日期汇总

Group data by foreign key and date with total by date

我需要帮助 select 按组织和日期进行和分组的每日付款。 按日期分组,然后是每天的支付总数和支付总额 表格如下,

organizations 
-----------------------------
|    id       |    name     |
+-------------+-------------+
|    1        |    org_1    |
+-------------+-------------+
|    2        |    org_2    |
+-------------+-------------+
|    3        |    org_2    |
-----------------------------

payments
------------------------------------------------------------
|   id      |  org_id    |    amount   |    date_created   |
+-----------+------------+-------------+-------------------+
|    1      |    2       |    20       |   2020-11-06      |
+-----------+------------+-------------+-------------------+
|    2      |    2       |    10       |   2020-11-06      |
+-----------+------------+-------------+-------------------+
|    3      |    1       |    50       |   2020-11-05      |
+-----------+------------+-------------+-------------------+
|    4      |    2       |    10       |   2020-11-05      |
------------------------------------------------------------

预期结果

----------------------------------------------------------------------------------------------
| date_created   |   total_amount |   num_payments    |  org_1    |    org_2    |    org_3   |
+----------------+----------------+-------------------+-----------+-------------+------------+
|   2020-11-06   |     30.00      |      2            |    0      |     2       |    0       |
+----------------+----------------+-------------------+-----------+-------------+------------+
|   2020-11-05   |     60.00      |      2            |    1      |     1       |    0       |
+----------------+----------------+-------------------+-----------+-------------+------------+

使用条件聚合:

select p.date_created,
    sum(p.amount) as total_amount,
    count(*) as num_payments,
    sum(case when o.name = 'org_1' then p.amount else 0 end) as org_1,
    sum(case when o.name = 'org_2' then p.amount else 0 end) as org_2,
    sum(case when o.name = 'org_3' then p.amount else 0 end) as org_3
from payments p
inner join organizations o on o.id = p.org_id
group by p.date_created