You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL面试题:统计各DK站点首次下单时间为周日的用户数量

业务数据表说明

1. DK_Table表

字段包含:DK_ID、DK_Name、Dk_location、Cust_Id、Amount、Event、Time_stamp,样例数据如下:

DK_ID   DK_Name Dk_location Cust_Id Amount  Event   Time _stamp
1   A   KOR01   111123  752 Order_Placed    8-14-21 21:05
3   C   WHF01   111123  688 Order_Placed    8-15-21 22:20
1   A   KOR01   111123  752 Order_Accepted  8-14-21 21:05
1   A   KOR01   111123  752 Order_Prepared  8-14-21 21:09
1   A   KOR01   111123  752 Order_Picked    8-14-21 21:25

2. Delivery_Agent_Table表

字段包含:DEX_Id、Cust_Id、DK_Id、Event、Time Stamp,样例数据如下:

DEX_Id  Cust_Id DK_Id   Event   Time Stamp
AAEE01  111123  1   Delivery_Assigned   8-14-21 21:07
AAEE01  111123  1   Arrived_DK Location 8-14-21 21:20
AAEE01  111123  1   Arrived_Destination 8-14-21 21:40
统计需求

按每个DK分组,统计首次下单时间为周日的用户总数量。

SQL查询语句

以下以MySQL语法为例,不同数据库周日的判断函数可根据实际情况调整:

SELECT 
    dk.DK_ID,
    dk.DK_Name,
    COUNT(DISTINCT dk.Cust_Id) AS 周日首次下单用户数
FROM (
    -- 子查询:获取每个DK下每位用户的首次下单时间
    SELECT 
        DK_ID,
        DK_Name,
        Cust_Id,
        MIN(`Time _stamp`) AS first_order_time
    FROM DK_Table
    WHERE Event = 'Order_Placed'
    GROUP BY DK_ID, DK_Name, Cust_Id
) dk
-- 筛选首次下单时间为周日的记录,MySQL DAYOFWEEK返回1代表周日
WHERE DAYOFWEEK(dk.first_order_time) = 1
GROUP BY dk.DK_ID, dk.DK_Name;

注:本次统计所需的DK标识、用户ID、下单事件及时间字段均已包含在DK_Table中,无需关联Delivery_Agent_Table。如果使用其他数据库可调整周几判断逻辑:PostgreSQL可替换为EXTRACT(DOW FROM dk.first_order_time) = 0,Oracle可替换为TO_CHAR(dk.first_order_time, 'D') = 1。

内容的提问来源于stack exchange,提问作者Jeevan A Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:27:01