![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
sql
袋鼠船长路飞
这个作者很懒,什么都没留下…
展开
-
ETL engineer面试的部分问题(sql + shell)
1、bshell 和 kshell的区别?bshell又称bash shell,kshell又称korn shell。他们都是Linux脚本语句与Linux内核交互的。bash shell在Linux机器上广泛使用,而korn shell在Unix机器上更多采用。二者初始化数组的语法不一样,而且kshell没办法用tab键补全command。2、如何计算客户购买周期?select customer_id,count(*) from customer_tab group by customer_id原创 2021-12-09 11:45:38 · 2185 阅读 · 0 评论 -
ETL日常工作事项
1、提数,又叫数据溯源,业务方提出字段需求和字段解释,需要寻找数据来源(有可能来源现有的业务系统,有可能需要提出需求改造,有可能需要额外获取捕捉)。2、现金流追溯,根据各个会计科目梳理业务场景,明确现金流在各个表的流向,如何分摊、如何汇总。画ER图。3、HANA数据库建模:分为ods层、DM层、DW层和APP层 四层结构。范式建模,写建表sql语句。4、完善数据接口文档(从原系统接什么表、什么字段、什么是必须字段、什么是主键、什么是拉链字段,是全量获取还是增量获取)5、编写ETL调度以及参与SAP原创 2021-11-23 23:49:34 · 977 阅读 · 0 评论 -
数据治理与ETL流程关系
这篇文章,浅谈数据治理与ETL流程关系。我认为可以从这几个方面去讨论数据治理(Data Governance):一致性、准确性、关联性、完整性、及时性。他们都和ETL实施起来流程密切相关。1、一致性:随数据传输文件一起传输过来的还有check_log表文件。ETL加工之前检测check_log表中得record_count value和select count(*) from table做比较,只有通过检测,才进行下一步ETL装载。否则程序abolish。2、准确性:检测check_log表中mone原创 2021-10-31 23:22:13 · 1489 阅读 · 0 评论 -
sql子查询的妙用:用在from后面做子表、用在where后面做子条件以及用在select后面用作子字段
昨天去客户方让客户小姐姐给我查询一段sql的时候,竟然发现sql子查询还可以这样写:sql子查询不仅仅可以出现在from 后面作为表结构,譬如:select t1.company_id,t1.company_name,t1.department_id,t2.department_namefrom company t1,(select * from department where department_name like '%T%')t2 --子查询作为表放在from 后面where t1原创 2021-09-25 15:33:58 · 8014 阅读 · 0 评论 -
oracle cast 函数报错
今天有同事问我在使用Oracle cast函数的时候报错,语句和报错如下:select cast(column_1 as decimal(38,8)) from dbo.table_1;我用过这个来test,结果是可以跑出来一部分的数据,但是跑到中间某一个record的时候就报错了。碰到一个error converting data type varchar to numberic的问题。所以今天就是为了解决如何正确使用Oracle cast实现转换字段value type的目的。1、首先,ca原创 2021-09-16 00:13:34 · 812 阅读 · 0 评论 -
sql group by筛选字段和聚合字段关系、group by 和where先后顺序、group by和distinct去重对比
今天这个帖子是为了更加熟悉 sql group by的运用:1、select 后面跟的字段和group by的筛选字段之间关系;2、如果select 后面字段没有数字项怎么用group by;3、使用group by 和 where的先后关系;譬如有这样一个表:create table table_1(column_a varchar2(10),column_b varchar2(10),column_c int);insert into table_1 values('a','b',1);原创 2021-09-13 23:04:36 · 1848 阅读 · 0 评论 -
sql数据质量验证之如何查询关联后空值验证
今天发贴解决一个数据质量校验中关于sql关联后空值验证的问题。到底是粗颗粒度关联明细表还是明细表关联粗颗粒度表?有这样两张表:select * from company;select * from department;--全表查company_name的空值select company_id from company where company_name is null;--粗颗粒度关联明细表查company_name空值select c.company_id from company原创 2021-09-09 00:21:12 · 742 阅读 · 0 评论 -
oralce数据库如何sql做select查询时候如何新增一列自定义列,并指定列名和固定value值
今天这个发帖目的是为了解决oralce数据库如何sql做select查询时候如何新增一列自定义列,并指定列名和固定value值。老规矩,用sqlfiddle创建好如下表结构:select * from company这个时候,如果需要对department_id进行部门分类,譬如department_id=101的部门类型是“外包”,department_id=102的部门类型是“内岗”,需要新增一个叫做“部门类型”字段并根据部门department_id进行分类取值,如何select实现呢?s原创 2021-08-29 00:09:23 · 6857 阅读 · 0 评论 -
sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?
今天这个帖子要解决一个问题:oracle数据库表间通过left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on 下去?利用sqlfiddle创建三张基本表结构先:create table company(company_id int,company_name varchar2(10),department_id int,employee_id int);create table department(department_id in原创 2021-08-26 23:05:35 · 2043 阅读 · 1 评论 -
sqlserver如何筛选第100--第200行的记录
昨天接到一个财务小姐姐的提问,如何提取SQL server某表中第1000到第2000行的记录。我细想了下,SQL server的确是没有像Oracle那样的rownum概念的。那么最好的办法就是子查询了。用sqlfiddle举个例子。为了减少数据量,咱们搞清楚原理,这里需求就改成如何从10行数据提取第5-第10行数据呢?1、先获取到前10行数据2、先获取到前10行数据按照相应检索index的降序排列3、然后在第三步基础上获取前5行数据4、最后将index排序归位所以查询SQL是:sel原创 2021-08-10 14:15:11 · 4150 阅读 · 0 评论 -
如何删除Oracle重复记录/保留最近一条记录
假设Oracle有如下table—employee:这里可以看到第二行记录和第五行记录除了id不一样,其他都一样,我们判定是重复记录,需要删除重复记录 id=2, 保留最近一条记录 id=5.相应的delete sql语句应该怎么写呢?delete from employee where id not in ( select max(id) from employee group by name,age,salary); 来分析下这段sql代码,首先select ma原创 2021-07-15 00:17:47 · 767 阅读 · 0 评论