文章目录
记录一下这段期间实习的一些工作内容和处理
hive 数据库操作
- 基本语句
SELECT *
FROM shop
WHERE ...>...
AND ... IS NULL
AND ... IN ...
ORDER BY ...
遇到的一些问题:
- 关于日期,查找在某个时间段的数据,数据类型是 20200701这样的,那就直接写
WHERE post_date>='20200701' AND post_date <= '20200731'
- 关于子表With AS 的结构,举个例子
WITH first_shop AS
(SELECT DISTINCT shop_no,dealer_name,name,shop_retail,area,shop_opendate AS suit_opendate
FROM dw_jzzn_main_shop
WHERE close_date IS NULL AND close_channel_date IS NULL
AND shop_retail IN ("常规店","旗舰店","时尚店","品类店","鞋店")
AND (shop_opendate IS NULL OR shop_opendate <= '20200630')
ORDER BY name,suit_opendate,shop_no
),
- 注意,如果要构建多个子表,一定要加逗号,最后一个表不用加逗号
- 关于`DISTINCT`的使用:这个字符只能放在最前面,后面可以跟多个字段,表示这几个字段都一样就去掉重复的
- 按某几个字段聚合求和或者计数:GROUP BY,只要用这个函数,前面必须要加聚合函数,比如sum(),count(),average()等等
- 比如:
WITH t_sale_shuidan AS
(SELECT shop_no,mas_code,sum(bill_money) AS shuidan_sale,sum(bill_qty) AS num_good
FROM t_sales
GROUP BY mas_code,shop_no
),
- 这里的意思是按店铺和订单号,其实只要订单号就行,但是只有mas_code,如group by mas_code,但是前面select shop_no了,代码就会报错
- 这里的目的是要聚合订单号一样的销售数据,获得一个订单的销售数量和销售价格
- INNER JOIN
EXCEL操作
- 一个在这个项目里最最重要的,我才知道的excel里的公式,叫VLOOKUP()
- 这个函数使用的情景是:有两个子表,两个子表有共同的地方,现在我要把这一个子表中的信息,加载到另一个表上
- 举例:
=VLOOKUP(A3,门店复购会员数!D:G,4,)
- A3:表示需要查找的店铺编号,也就是两个表共同的东西
- 门店复购会员数!D:G:要查找的另一个子表里的某几列
- 4:查找到一样的店铺编号后,将门店复购会员数!D:G里的第4列填充到单元格里