
SQL
文章平均质量分 52
通用 SQL 在各 DBMS 的用法及其计算逻辑的实现
米竹
这个作者很懒,什么都没留下…
展开
-
借助 Python 的 SQLAlchemy 库查询数据
SQLAlchemy 库是一个非常强大又相当灵活的库,它在关系型数据库与传统编程之间建起了一座桥梁。它允许我们使用原始的 SQL 执行查询,同时也提供了高级的方法来查询和更新数据库。本文仅简要介绍使用原生 SQL 执行查询部分。使用 SQLAlchemy 查询 MySQL 的数据首先需要安装 sqlalchemy 库和 pymysql 库;使用 sqlalchemy 的 create_engine() 方法,并借助 pymysql 驱动包创建与指定数据库的连接;使用 pandas 库的 read原创 2020-05-15 00:24:53 · 1866 阅读 · 0 评论 -
Hive 常用日期时间函数汇总 及常用场景介绍
Hive 常用的日期及时间函数,以及常用的场景介绍。声明:函数的参数中,中括号[]表示参数可选,即可不传入可传入;时间是包括日期的,hive中的日期时间函数的对象可以是时间类型,也可以是字符串类型(STRING);hive的日期函数,对时间(yyyy-MM-dd HH:mm:ss)格式的字符串几乎都是通用的。/导图一、常用日期时间1.1 返回时间的函数返回当前时间:cu...原创 2020-03-28 10:27:48 · 4590 阅读 · 0 评论 -
SQL 求最大连续月数
在零售行业,会有一种负毛利的现象,就是商品的售价要低于进价,虽说出现负毛利不代表一定亏损(还要看销售返利),但是如果某商品连续几个月都出现了负毛利的情况则需要引起重视,可能是因为采购价格过高造成的因素。所以有必要计算出现连续负毛利的商品,并且查看下出现负毛利的最大连续月数是多少。原创 2020-03-22 18:45:59 · 3496 阅读 · 3 评论 -
SQL Server 常用日期函数
最近在 SQL Server 上写存储过程,发现在 MySQL 上能使用的一些日期函数无法使用,在此简要介绍一下 SQL Server 中一些日期函数的使用。SQL Server 版本是 Microsoft SQL Server 2008 (RTM) .一、常用函数1.1 返回日期和时间的函数– inshortgetdate(): 返回当前时间,类似于 MySQL精确到毫秒...原创 2020-03-17 22:11:13 · 612 阅读 · 0 评论 -
sql计算上班总时长——以每天的第一次上下班打卡时间为准
本文交代了一种求上班总时长的特殊的业务场景,并造了一个玩具数据 ,分别用MySQL和Hive SQL给出了其计算逻辑。一、业务背景及口径说明指标 上班总时长 = SUM(下班时间-上班时间) ,但在特殊的业务场景下并没有那么容易得到,如:某员工一天的操作为:1→1→1→2→2(上班打卡为1,下班打卡为2)。因为可以重复打卡,该员工打完卡后不确定是否打卡成功,又进行多次操作。此时,定...原创 2020-03-02 09:53:44 · 8680 阅读 · 0 评论 -
MySQL 和 Hive 中两种日期格式的转换
在解析数据的时会遇到下面的两种日期格式:yyyy-MM-ddyyyyMMdd这两种格式的转换通常有两种思路:使用时间处理函数;使用字符串处理函数。假设现在的日期为2020年2月2日,需要实现20200202与2020-02-02两种形式的相互转换。下面将介绍在 MySQL 和 Hive SQL 中分别是如何实现的。MySQL1.使用时间处理函数unix_timestam...原创 2020-02-25 12:13:08 · 4524 阅读 · 0 评论 -
SQL求同比增长率(系列1)
一、业务背景及口径说明假设现在有下方这两张表(sales和dim_date),我们需要通过它们计算销售额同比增长率。第一张表是 sales(销售表),记录日期和日期对应的销售额;第二张表是dim_date(日期维表),记录日期对应的可比日期(这里是去年同月同天)。口径如下:当日销售额同比增长率=当日销售额去年同月同天销售额−100%当日销售额同比增长率=\frac{当日销售额}{去年...原创 2020-02-23 22:00:10 · 8995 阅读 · 0 评论 -
MySQL中将一个列按逗号分割为多列
某些业务表出于历史原因或性能原因,都使用了违反第一范式的设计模式。即同一个列中存储了多个属性值。如下表中的 bill_ids 所示:gmt_createbill_ids2019-08-12 00:00:00209755,209756,209757…………这种情况下,可以考虑将该列根据分隔符进行分割,形成多个列。如下表所示:gmt_createbil...原创 2019-08-12 11:57:59 · 32841 阅读 · 1 评论 -
SQL中的三种去重方法
在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行去重。举个栗子,现有这样一张表 task:task_idorder_idstart_tim...原创 2020-01-07 11:01:19 · 129537 阅读 · 0 评论