首先,我不确定这是否可能。
假设我有这样一个数据集示例
CREATE TABLE TRANSACTION(
user_id numeric,
account_id varchar,
product varchar,
colour varchar,
price numeric);
insert into transaction (user_id, account_id, product, colour, price)
values
(1, 'a1', 'biycle', 'black', 500),
(1, 'a2', 'motorbike', 'red', 1000),
(1, 'a2', 'motorbike', 'blue', 1200),
(2, 'b3', 'car', 'grey', 10000),
(2, 'b2', 'motorbike', 'black', 1250),
(3, 'c1', 'biycle', 'black', 500),
(3, 'c2', 'biycle', 'black', 525),
(3, 'c4', 'skateboard', 'white', 250),
(3, 'c5', 'scooter', 'blue', 260)
从表中我们知道
总的真实客户是3(1,2,3)
实际账户总额为8(a1、a2、b3、b2、c1、c2、c4、c5)
然后用这个代码
SELECT
product,
colour,
sum(price)total_price,
count(DISTINCT user_id)customer_total,
count(DISTINCT account_id)account_total
from transaction
group by
product, colour
回报是这样的
| 积|颜色|总价|客户_总计|帐户_总计|
| - ------| - ------| - ------| - ------| - ------|
| 双循环|黑色|小行星1525|第二章|三个|
| 汽车|灰色|一万|1个|1个|
| 摩托车|黑色|小行星125| 1个|1个|
| 摩托车|蓝色|小行星1200| 1个|1个|
| 摩托车|红色|一千|1个|1个|
| 滑板车|蓝色|二百六十|1个|1个|
| 滑板|白色|二百五十|1个|1个|
从上面的输出,
如果我们计算customer_total的总和,则为8,
如果我们合计account_total,则为9
是否有任何替代方法可以使customer_total为3,account_total为8
1条答案
按热度按时间tf7tbtn21#
您可以使用内联查询计算帐户和客户合计,内联查询在同一查询中计算客户和帐户合计。
结果:
| 积|颜色|总价|客户_总计|帐户_总计|
| - ------| - ------| - ------| - ------| - ------|
| 双循环|黑色|小行星1525|三个|八个|
| 汽车|灰色|一万|三个|八个|
| 摩托车|黑色|小行星125|三个|八个|
| 摩托车|蓝色|小行星1200|三个|八个|
| 摩托车|红色|一千|三个|八个|
| 滑板车|蓝色|二百六十|三个|八个|
| 滑板|白色|二百五十|三个|八个|