sql与聚合的连接

ws51t4hk  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(285)

我需要编写一个查询,从下面的3个表中创建一个简单的报表(sqlfiddle在这里:http://www.sqlfiddle.com/#!9/9/2)
表:程序

id    |  org_id  |  unique_name
------------------------------
1        15         pg_1
2        25         pg_2

表:客户

id    |  program_id   |  first_name  |  last_name
-------------------------------------------------
1        1               Bob            Smith
2        2               John           Jones
3        2               Rob            Walker

表:事务

id    |  customer_id    |  amount
---------------------------------
1        1                 10.00 
2        1                 10.00 
3        2                 10.00 
4        2                 10.00 
5        2                 10.00 
6        2                 10.00 
7        3                 10.00 
8        3                 10.00 
9        3                 10.00 
10       3                 10.00

我需要生成一个相当简单的报告有多少客户属于每个程序唯一的名称,以及每个程序唯一名称的总交易金额。
所以对于这些数据,它看起来像。。。

Program Name   |  # Customers    | Total Amount
-----------------------------------------------
pg_1              1                 20.00
pg_2              2                 80.00

您可以在这里看到sqlfiddle:http://www.sqlfiddle.com/#!9月9日
我当前的查询显示每个客户的交易总额,但我不确定如何将客户分组到一个计数中。

select program.unique_name as "Program Name",
customer.id,
sum(transaction.amount) as "Total Amount"
from program 
join customer on customer.program_id = program.id
join transaction on transaction.customer_id = customer.id
group by customer.id

如何在程序名上也分组?

6tqwzwtp

6tqwzwtp1#

试试下面的。

select p.unique_name, count(distinct c.id), sum(t.amount)
from customer c
left outer join transaction t on t.customer_id = c.id
inner join program p on c.program_id = p.id
group by p.unique_name;

相关问题