• 【牛客刷题-SQL大厂面试真题】NO5.某宝店铺分析(电商模式)


    在这里插入图片描述
    体系化学习SQL,请到牛客经典高频面试题库,参加实训,提高你的SQL技能吧~

    https://www.nowcoder.com/link/pc_csdncpt_itbd_sql

    🐴 SQL180 某宝店铺的SPU数量

    🚀 建表语句

    drop table if exists product_tb;
    CREATE TABLE product_tb(
    item_id char(10) NOT NULL,
    style_id char(10) NOT NULL,
    tag_price int(10) NOT NULL,
    inventory int(10) NOT NULL
    );
    INSERT INTO product_tb VALUES('A001', 'A', 100,  20);
    INSERT INTO product_tb VALUES('A002', 'A', 120, 30);
    INSERT INTO product_tb VALUES('A003', 'A', 200,  15);
    INSERT INTO product_tb VALUES('B001', 'B', 130, 18);
    INSERT INTO product_tb VALUES('B002', 'B', 150,  22);
    INSERT INTO product_tb VALUES('B003', 'B', 125, 10);
    INSERT INTO product_tb VALUES('B004', 'B', 155,  12);
    INSERT INTO product_tb VALUES('C001', 'C', 260, 25);
    INSERT INTO product_tb VALUES('C002', 'C', 280,  18);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    📖 需求

    请你统计每款的SPU(货号)数量,并按SPU数量降序排序
    
    • 1

    🍌🍌 答案

    select style_id,count(item_id) as SPU_num
    from product_tb
    group by style_id
    order by  SPU_num desc
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    🐴 SQL181 某宝店铺的实际销售额与客单价

    🚀 建表语句

    drop table if exists sales_tb;
    CREATE TABLE sales_tb(
    sales_date date NOT NULL,
    user_id int(10) NOT NULL,
    item_id char(10) NOT NULL,
    sales_num int(10) NOT NULL,
    sales_price int(10) NOT NULL
    );
    
    INSERT INTO sales_tb VALUES('2021-11-1', 1, 'A001',  1, 90);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'A002',  2, 220);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-2', 3, 'C001',  2, 500);
    INSERT INTO sales_tb VALUES('2021-11-2', 4, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-3', 5, 'C001',  1, 240);
    INSERT INTO sales_tb VALUES('2021-11-3', 6, 'C002',  1, 270);
    INSERT INTO sales_tb VALUES('2021-11-4', 7, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-4', 8, 'B002',  1, 140);
    INSERT INTO sales_tb VALUES('2021-11-4', 9, 'B001',  1, 125);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B004',  1, 150);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-6', 11, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-6', 10, 'B004',  1, 150);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    📖 需求

    请你统计实际总销售额与客单价(人均付费,总收入/总用户数,结果保留两位小数)
    
    • 1

    🍌🍌 答案

    select sum(sales_price) as sales_total,
    round(sum(sales_price)/count(distinct user_id),2) as per_trans 
    from sales_tb
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    🐴 SQL182 某宝店铺折扣率

    🚀 建表语句

    drop table if exists product_tb;
    CREATE TABLE product_tb(
    item_id char(10) NOT NULL,
    style_id char(10) NOT NULL,
    tag_price int(10) NOT NULL,
    inventory int(10) NOT NULL
    );
    INSERT INTO product_tb VALUES('A001', 'A', 100,  20);
    INSERT INTO product_tb VALUES('A002', 'A', 120, 30);
    INSERT INTO product_tb VALUES('A003', 'A', 200,  15);
    INSERT INTO product_tb VALUES('B001', 'B', 130, 18);
    INSERT INTO product_tb VALUES('B002', 'B', 150,  22);
    INSERT INTO product_tb VALUES('B003', 'B', 125, 10);
    INSERT INTO product_tb VALUES('B004', 'B', 155,  12);
    INSERT INTO product_tb VALUES('C001', 'C', 260, 25);
    INSERT INTO product_tb VALUES('C002', 'C', 280,  18);
    
    drop table if exists sales_tb;
    CREATE TABLE sales_tb(
    sales_date date NOT NULL,
    user_id int(10) NOT NULL,
    item_id char(10) NOT NULL,
    sales_num int(10) NOT NULL,
    sales_price int(10) NOT NULL
    );
    
    INSERT INTO sales_tb VALUES('2021-11-1', 1, 'A001',  1, 90);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'A002',  2, 220);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-2', 3, 'C001',  2, 500);
    INSERT INTO sales_tb VALUES('2021-11-2', 4, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-3', 5, 'C001',  1, 240);
    INSERT INTO sales_tb VALUES('2021-11-3', 6, 'C002',  1, 270);
    INSERT INTO sales_tb VALUES('2021-11-4', 7, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-4', 8, 'B002',  1, 140);
    INSERT INTO sales_tb VALUES('2021-11-4', 9, 'B001',  1, 125);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B004',  1, 150);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-6', 11, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-6', 10, 'B004',  1, 150);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    📖 需求

    请你统计折扣率(GMV/吊牌金额,GMV指的是成交金额),折扣率保留两位小数:
    
    • 1

    '🍌🍌 答案

    select 
    round(sum(sales_price)*100/sum(sales_num*tag_price),2) discount_rate
    from sales_tb left join product_tb using(item_id)
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    🐴 SQL183 某宝店铺动销率与售罄率

    🚀 建表语句

    drop table if exists product_tb;
    CREATE TABLE product_tb(
    item_id char(10) NOT NULL,
    style_id char(10) NOT NULL,
    tag_price int(10) NOT NULL,
    inventory int(10) NOT NULL
    );
    INSERT INTO product_tb VALUES('A001', 'A', 100,  20);
    INSERT INTO product_tb VALUES('A002', 'A', 120, 30);
    INSERT INTO product_tb VALUES('A003', 'A', 200,  15);
    INSERT INTO product_tb VALUES('B001', 'B', 130, 18);
    INSERT INTO product_tb VALUES('B002', 'B', 150,  22);
    INSERT INTO product_tb VALUES('B003', 'B', 125, 10);
    INSERT INTO product_tb VALUES('B004', 'B', 155,  12);
    INSERT INTO product_tb VALUES('C001', 'C', 260, 25);
    INSERT INTO product_tb VALUES('C002', 'C', 280,  18);
    
    drop table if exists sales_tb;
    CREATE TABLE sales_tb(
    sales_date date NOT NULL,
    user_id int(10) NOT NULL,
    item_id char(10) NOT NULL,
    sales_num int(10) NOT NULL,
    sales_price int(10) NOT NULL
    );
    
    INSERT INTO sales_tb VALUES('2021-11-1', 1, 'A001',  1, 90);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'A002',  2, 220);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-2', 3, 'C001',  2, 500);
    INSERT INTO sales_tb VALUES('2021-11-2', 4, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-3', 5, 'C001',  1, 240);
    INSERT INTO sales_tb VALUES('2021-11-3', 6, 'C002',  1, 270);
    INSERT INTO sales_tb VALUES('2021-11-4', 7, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-4', 8, 'B002',  1, 140);
    INSERT INTO sales_tb VALUES('2021-11-4', 9, 'B001',  1, 125);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B004',  1, 150);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-6', 11, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-6', 10, 'B004',  1, 150);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    📖 需求

    请你统计每款的动销率(pin_rate,有销售的SKU数量/在售SKU数量)与售罄率(sell-through_rate,GMV/备货值,备货值=吊牌价*库存数),按style_id升序排序
    
    • 1

    🍌🍌 答案

    select 
    style_id
    ,round(sum(t2.sales_num)/(sum(inventory)-sum(t2.sales_num))*100,2) pin_rate
    ,round(sum(sales_price)/sum(tag_price*inventory)*100,2) sell_rate
    from product_tb t1 join 
    (select 
            item_id
            ,sum(sales_num) sales_num
            ,sum(sales_price) sales_price
            from sales_tb
            group by item_id) t2
            using(item_id)
            group by style_id
            order by style_id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    🐴 SQL184 某宝店铺连续2天及以上购物的用户及其对应的天数

    🚀 建表语句

    drop table if exists sales_tb;
    CREATE TABLE sales_tb(
    sales_date date NOT NULL,
    user_id int(10) NOT NULL,
    item_id char(10) NOT NULL,
    sales_num int(10) NOT NULL,
    sales_price int(10) NOT NULL
    );
    
    INSERT INTO sales_tb VALUES('2021-11-1', 1, 'A001',  1, 90);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'A002',  2, 220);
    INSERT INTO sales_tb VALUES('2021-11-1', 2, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-2', 3, 'C001',  2, 500);
    INSERT INTO sales_tb VALUES('2021-11-2', 4, 'B001',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-3', 5, 'C001',  1, 240);
    INSERT INTO sales_tb VALUES('2021-11-3', 6, 'C002',  1, 270);
    INSERT INTO sales_tb VALUES('2021-11-4', 7, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-4', 8, 'B002',  1, 140);
    INSERT INTO sales_tb VALUES('2021-11-4', 9, 'B001',  1, 125);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'B004',  1, 150);
    INSERT INTO sales_tb VALUES('2021-11-5', 10, 'A003',  1, 180);
    INSERT INTO sales_tb VALUES('2021-11-6', 11, 'B003',  1, 120);
    INSERT INTO sales_tb VALUES('2021-11-6', 10, 'B004',  1, 150);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    📖 需求

    请你统计连续2天及以上在该店铺购物的用户及其对应的次数(若有多个用户,按user_id升序排序)
    
    • 1

    🍌🍌 答案

    select user_id,
           count(diff) date_cnt
           from 
    (select user_id,
           sales_date - rk diff
           from 
    (select user_id,
           sales_date,
           rank() over(partition by sales_date) rk
           from (select distinct user_id,sales_date from sales_tb)aa )a) b
           group by user_id
           having date_cnt>=2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    CTF-SSH私钥泄露【简单易懂】
    详解SOAP简单对象访问协议
    前端登录时所做的token验证(路由守卫、请求拦截器、响应拦截器)
    MATLAB中print函数使用
    《Python3 网络爬虫开发实战》urllib 初体验
    虚拟机开机字体变大,进入系统后字体模糊
    IOS上传AppStore
    【Vuex+ElementUI】Vuex中取值存值以及异步加载的使用
    国际视频编解码标准提案下载地址
    第二章:ShardingSphere简介
  • 原文地址:https://blog.csdn.net/weixin_41645135/article/details/126150571