最近做了京东的24年春招题,题目如下: alt

题目分析

在这道题目中,我们需要从两个表中提取数据:user_infoorder_log。以下是每个表使用的字段的汉语意思:

  1. user_info(用户信息表)

    • uid:用户ID
  2. order_log(订单日志表)

    • uid:用户ID

目标:计算没有下过订单的用户数量。

输出要求:输出没有下过订单的用户的数量。

知识点关键词:子查询、NOT IN、计数

解答步骤

  1. 子查询

    首先,我们需要找出所有下过订单的用户ID。可以通过从 order_log 表中选择 uid 来实现。

    select uid from order_log
    
  2. 主查询

    在主查询中,我们从 user_info 表中选择所有用户,并使用 NOT IN 子查询来排除那些已经下过订单的用户。然后使用 COUNT(*) 函数来计算没有下过订单的用户数量。

    select 
    count(*) as cnt
    from user_info
    where uid not in (...)
    

完整代码

select 
count(*) as cnt
from user_info
where uid not in (select uid from order_log)

近似题目练习推荐

查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t

  • 知识点:子查询、筛选、计数

统计各个部门的工资记录数

  • 知识点:子查询、计数