暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL脚本案例【35】商品分类

皮皮克克 2024-09-28
202

关注+星标,干货第一时间送达


前面插录了几篇 Shell 脚本:

Shell 脚本案例【3】 Mysql批量导入Shell 脚本案例【2】Mysql批量导出

和 Python:

Python机器学习【1】数据集Python机器学习【2】字典特征提取

相关的内容。

想的是丰富知识,扩充装备库吧。

其实,作为一名程序员,

各种语言、各种框架、各种代码,

都是要去了解掌握的。

喜欢大家能够有所收获,并且喜欢。

如果觉得小编的分享还不错,

别忘记点赞嗷

今天,做一道简单的SQL题目。

【温馨提示:建表语句及数据导入脚本,已经放在文章末尾


一、需求场景

题目:

从订单明细表order_detail中,根据商品的销售数量进行分类。

销售量 0 ~ 5000 为冷门商品,

销售量 5001 ~ 19999 为一般商品,

销售量 20000 以上为热门商品。

结果展示为统计不同类别商品的销量。

订单明细表order_detail:

正确结果:


二、解决方案

演示工具:Hive-3.1.3 + DataGrip2022

题意清晰明了,没有弯弯绕绕,

直接开动。

(1)按照商品编号sku_id分组,统计每件商品的销量和

select sku_id,
       sum(sku_num) as cnt
from order_detail
group by sku_id

结果集:

(2)根据每个商品销量的大小,进行分类

select
 case when cnt > 20000 then '热门'
      when cnt > 5000 then '一般'
      else '冷门'
     end as category
from (
      select sku_id,
             sum(sku_num) as cnt
      from order_detail
      group by sku_id
  )t1

结果集:

如果这里不使用 case when,

也可以替换为 if 判断,

那么,代码就是这样:

select
    sku_id,
    `if`(cnt>20000'热门'`if`(cnt>5000'一般''冷门')) as category
from (
         select sku_id,
                sum(sku_num) as cnt
         from order_detail
         group by sku_id
     )t1


(3)按照分类分组,计算每个分类的销量和

select category,
       count(*) as num
from (
         select
             case when cnt > 20000 then '热门'
                  when cnt > 5000 then '一般'
                  else '冷门'
                 end as category
         from (
                  select sku_id,
                         sum(sku_num) as cnt
                  from order_detail
                  group by sku_id
              )t1
     )t2
group by category

结果集:

三、源数据

订单明细表order_detail:

create table order_detail
(
    order_detail_id string,
    order_id        string,
    sku_id          string,
    create_date     string,
    price           decimal(162),
    sku_num         int
)
    row format serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
        with serdeproperties ('field.delim' = '\t'stored as
    inputformat 'org.apache.hadoop.mapred.TextInputFormat'
    outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    location 'hdfs://mycluster/user/hive/warehouse/hql_test2.db/order_detail'
    tblproperties ('bucketing_version' = '2');

INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('1''1''1''2021-09-27'2000.002);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('2''1''3''2021-09-27'5000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('3''2''4''2021-09-28'6000.009);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('4''2''5''2021-09-28'500.0033);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('5''3''7''2021-09-29'100.0037);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('6''3''8''2021-09-29'600.0046);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('7''3''9''2021-09-29'1000.0012);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('8''4''12''2021-09-30'20.0043);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('9''5''1''2021-10-01'2000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('10''5''2''2021-10-01'10.0018);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('11''5''3''2021-10-01'5000.006);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('12''6''4''2021-10-01'6000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('13''6''6''2021-10-01'2000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('14''7''7''2021-10-01'100.0017);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('15''7''8''2021-10-01'600.0048);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('16''7''9''2021-10-01'1000.0045);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('17''8''10''2021-10-02'100.0048);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('18''8''11''2021-10-02'50.0015);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('19''8''12''2021-10-02'20.0031);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('20''9''1''2021-09-30'2000.009);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('21''9''2''2021-10-02'10.005800);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('22''10''4''2021-10-02'6000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('23''10''5''2021-10-02'500.0024);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('24''10''6''2021-10-02'2000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('25''11''8''2021-10-02'600.0039);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('26''12''10''2021-10-03'100.0047);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('27''12''11''2021-10-03'50.0019);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('28''12''12''2021-10-03'20.0013000);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('29''13''1''2021-10-03'2000.004);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('30''13''3''2021-10-03'5000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('31''14''4''2021-10-03'6000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('32''14''5''2021-10-03'500.0047);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('33''14''6''2021-10-03'2000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('34''15''7''2021-10-03'100.0020);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('35''16''10''2021-10-03'100.0022);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('36''16''11''2021-10-03'50.0042);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('37''16''12''2021-10-03'20.007400);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('38''17''1''2021-10-04'2000.003);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('39''17''2''2021-10-04'10.0021);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('40''18''4''2021-10-04'6000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('41''18''5''2021-10-04'500.0028);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('42''18''6''2021-10-04'2000.003);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('43''19''7''2021-10-04'100.0055);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('44''19''8''2021-10-04'600.0011);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('45''19''9''2021-10-04'1000.0031);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('46''20''11''2021-10-04'50.0045);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('47''20''12''2021-10-04'20.0027);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('48''21''1''2021-10-04'2000.002);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('49''21''2''2021-10-04'10.0039);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('50''21''3''2021-10-04'5000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('51''22''4''2021-10-05'6000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('52''22''5''2021-10-05'500.0020);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('53''23''7''2021-10-05'100.0058);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('54''23''8''2021-10-05'600.0018);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('55''23''9''2021-10-05'1000.0030);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('56''24''10''2021-10-05'100.0027);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('57''24''11''2021-10-05'50.0028);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('58''24''12''2021-10-05'20.0053);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('59''25''1''2021-10-05'2000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('60''25''2''2021-10-05'10.0035);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('61''25''3''2021-10-05'5000.009);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('62''26''4''2021-10-05'6000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('63''26''5''2021-10-05'500.0013);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('64''26''6''2021-10-05'2000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('65''27''7''2021-10-06'100.0030);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('66''27''8''2021-10-06'600.0019);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('67''27''9''2021-10-06'1000.0033);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('68''28''10''2021-10-06'100.0037);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('69''28''11''2021-10-06'50.0046);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('70''28''12''2021-10-06'20.0045);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('71''29''1''2021-10-06'2000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('72''29''2''2021-10-06'10.0057);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('73''29''3''2021-10-06'5000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('74''30''4''2021-10-06'6000.003);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('75''30''5''2021-10-06'500.0033);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('76''30''6''2021-10-06'2000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('77''31''8''2021-10-07'600.0013);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('78''31''9''2021-10-07'1000.0043);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('79''32''10''2021-10-07'100.0024);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('80''32''11''2021-10-07'50.0030);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('81''33''1''2021-10-07'2000.008);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('82''33''2''2021-10-07'10.0048);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('83''33''3''2021-10-07'5000.005);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('84''34''4''2021-10-07'6000.0010);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('85''34''5''2021-10-07'500.0044);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('86''34''6''2021-10-07'2000.003);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('87''35''8''2020-10-08'600.0025);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('88''36''10''2020-10-08'100.0057);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('89''36''11''2020-10-08'50.0044);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('90''36''12''2020-10-08'20.0056);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('91''37''1''2020-10-08'2000.002);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('92''37''2''2020-10-08'10.0026);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('93''37''3''2020-10-08'5000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('94''38''6''2020-10-08'2000.006);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('95''39''7''2020-10-08'100.0035);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('96''39''8''2020-10-08'600.0034);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('97''40''10''2020-10-08'100.0037);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('98''40''11''2020-10-08'50.0051);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('99''40''12''2020-10-08'20.0027);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('100''41''15''2020-10-08'300.0015);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('101''42''13''2021-01-01'260.0013);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('102''43''13''2021-01-02'280.0014);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('103''44''14''2021-01-03'420.0021);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('104''45''14''2021-01-04'240.0012);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('105''46''14''2021-09-26'240.0012);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('106''47''14''2021-10-24'240.0012);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('107''48''14''2022-09-24'240.0012);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('108''49''1''2022-09-24'2000.001);
INSERT INTO hql_test2.order_detail (order_detail_id, order_id, sku_id, create_date, price, sku_num) VALUES ('109''49''2''2022-09-24'10.001);


OK,这就是本期的内容了,下期再见!

文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论