给定以下表格
用户信息:
- user_id
- 日期
用户浏览:
- user_id
- 事务处理日期
- 采购_装载http://sqlfiddle.com/#!9/0b73b4
计算2020-01-01年1月的30天活跃消费者,计数(客户谁在过去30天内(即2020-01-01至2020-01-31(进行了至少一次交易。
The result table should be as follows:
-------------------------------------------------------------
Date | Total_customers | Customers_who_made_purchase
-------------------------------------------------------------
01-01-2020 100 20
02-01-2020 200 60
Total 300 80
如何获得最后一行的总数?SQL中也是这样?
我试过这个:
select
date(User_info.date) as date
, count(distinct User_trascations.user_id),
count(distinct User_info.user_id) as conversion
from User_info join User_trascations
on User_info.user_id = User_trascations.user_id
group by 1
正如我在评论中所说,这是一个示例,可以让您了解如何获得所需结果。
SELECT
COALESCE(A.Date, 'Total') AS User_Date,
COUNT(DISTINCT(B.User_Id)) AS Total_Customers,
COUNT(DISTINCT(A.User_Id)) AS Customer_Purchases
FROM
USER_INFO A JOIN USER_TRASCATIONS B ON
A.User_Id = B.User_Id
GROUP BY
ROLLUP(A.Date)
Coalesce函数类似于if/else。当值为null(A.Date值(时,它将返回传递的字符串("总计"(。这将是您在结果(摘要(末尾看到的文本。
Rollup函数与Group By一起定义结果组,并在最后一行获取简历。