【数据分析面试】19.计算主要地址下单百分比 (SQL)

在这里插入图片描述

题目

给定一个交易表和一个用户表,编写一个查询来确定用户是否倾向于向他们的主要地址下订单,而不是其他地址。

注意:返回下订单到他们家庭地址的百分比作为 home_address_percent

示例:

输入:

transactions 表:

列名类型
idINTEGER
user_idINTEGER
created_atDATETIME
shipping_addressVARCHAR

users 表:

列名类型
idINTEGER
nameVARCHAR
addressVARCHAR

示例输出:

home_address_percent0.76

答案

解题思路

由于结果输出显示是一个百分比0.76,没有用户id,表明需要计算的是一个总体的值,而非求每个用户的百分比。

首先,我们需要确定每个用户的主要地址是什么,然后计算送货地址与主要地址的匹配次数,并最终计算百分比。

答案代码

SELECT  
    ROUND(  
        SUM(  
            CASE   
                WHEN t.shipping_address = u.address THEN 1  
                ELSE 0  
            END  
        ) / COUNT(*),   
        2  
    ) AS home_address_percent  
FROM transactions t  
JOIN users u ON t.user_id = u.id;
  • SUM(CASE WHEN……): 这部分计算了每个用户的订单中送货地址与用户地址匹配的次数。
  • COUNT(*): 这部分计算了每个用户的订单总数。
  • ROUND(, 2): 这将结果四舍五入到两位小数,以获得百分比形式的结果。

更多详细答案可关注公众号查阅。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值