Mysql 查找每天在每个国家/地区首次订购的用户数
我有两张桌子,看起来像:Mysql 查找每天在每个国家/地区首次订购的用户数,mysql,sql,Mysql,Sql,我有两张桌子,看起来像: user_dataset +------+---------------+------------+ |userid| Register_time | Country | +------+---------------+------------+ | 1 | 03/02/17 | TW | | 2 | 20/03/17 | SG | | 3 | 26/03/17
user_dataset
+------+---------------+------------+
|userid| Register_time | Country |
+------+---------------+------------+
| 1 | 03/02/17 | TW |
| 2 | 20/03/17 | SG |
| 3 | 26/03/17 | PH |
| 4 | 05/02/17 | VN |
| 5 | 01/10/17 | ID |
| 6 | 03/09/17 | MY |
| ...| ........ | ... |
+------+---------------+------------+
order_dataset
+--------+--------+------------+--------+------------+
|orderid | userid | itemid | gmv | order_time |
+--------+--------+------------+--------+------------+
|1030132 | 3 | 3366770 | 27,0 | 24/04/17 |
|1030137 | 5 | 6130641 | 69,0 | 02/02/17 |
|1030147 | 1 | 6770063 | 87,0 | 25/04/17 |
|1030153 | 6 | 4193426 | 82,0 | 05/11/17 |
|1030155 | 4 | 8825994 | 29,0 | 03/07/17 |
|1030160 | 2 | 5660916 | 44,0 | 30/01/17 |
|....... | ... | ... | ... | ... |
+--------+--------+------------+--------+------------+
我被告知写一个SQL语句,以查找每天在每个国家/地区第一次下单的用户数量。
我不明白这个问题,有人能给我解释一下输出是什么样子的吗?我不是在问问题,但如果有人愿意写,那就太好了
提前感谢将表
user\u dataset
加入到一个查询中,该查询从order\u dataset
返回每个userid
的第一个订单的日期,并聚合:
select u.country, o.order_time, count(*) counter
from user_dataset u inner join (
select userid, min(order_time) order_time
from order_dataset
group by userid
) o on o.userid = u.userid
group by u.country, o.order_time
如果有一个用户在同一天下了2个订单,则使用
count(不同的用户ID)
代替count(*)
提示:聚合数据以获取每个用户的最早日期。然后加入这个国家,再次聚合。向后阅读。对于每一天,一定要找到拥有第一个订单的用户。聚合。
SELECT
country,
order_time,
COUNT(*)
FROM user u
LEFT JOIN(
SELECT
userid,
MIN(order_time) AS min_date
FROM order
GROUP BY userid
) o
ON u.userid = o.userid
LEFT JOIN order ot
ON u.userid = ot.userid
WHERE order_time = min_date
GROUP BY country, order_time
ORDER BY country;