解题思路:
将Signups和Confirmations进行左连接,连接的条件为Signups.user_id=Confirmations.user_id
根据题中要求进行查询,这里使用AVG聚合函数来求解确认率
AVG(c.action=‘confirmed’)表示对action列进行求平均,如果action=‘confirmed’,则返回true,此时在AVG函数中,将其计数为1,如果为false,则将其计数为0.
但是对于值为null的行,AVG在进行计算的时候,则会将其忽略,所以此时使用IFNULL函数将其null值改为0.
最后使用ROUND函数对最终结果保留两位小数
SELECTs.user_id,ROUND(IFNULL(AVG(c.action='confirmed'), 0), 2) AS confirmation_rate
FROMSignups AS s
LEFT JOINConfirmations AS c
ONs.user_id = c.user_id
GROUP BYs.user_id