![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
有关SQL
文章平均质量分 88
有关SQL的一些题目和技巧
数据小羊
一枚工作8年的大数据开发,围绕大数据开发日常工作、技能分享,欢迎交流
展开
-
SQL GROUPING运算符详解
在大数据开发中,我们经常需要对数据进行分组和汇总分析。SQL提供了强大的GROUP BY子句来实现这一功能,而GROUPING运算符则是GROUP BY的一个重要补充。本文将详细介绍GROUPING运算符的概念、用法以及实际应用场景。原创 2024-07-17 12:00:00 · 816 阅读 · 1 评论 -
SQL 中的 EXISTS 子句:探究其用途与应用
EXISTS是一个逻辑操作符,用于测试一个子查询是否返回至少一个行。如果子查询返回至少一个行,则EXISTS的结果为真(TRUE),否则为假(FALSE)。本文讲清关于EXISTS 子句的用法。原创 2024-07-16 22:01:53 · 1206 阅读 · 1 评论 -
SQL中的谓词与谓词下推
SQL 谓词是数据库查询中至关重要的工具。通过正确使用谓词,可以编写高效、准确的 SQL 查询,快速提取所需的数据。在工作中,合理使用谓词不仅能提高查询效率,还能避免不必要的资源浪费。原创 2024-07-15 22:41:04 · 1218 阅读 · 1 评论 -
Spark SQL中的正则表达式应用
正则表达式在Spark SQL中是一个强大而versatile的工具,它不仅能够处理文本数据,还能在ETL流程、数据验证、特征工程等多个方面发挥重要作用。然而,使用正则表达式需要在表达能力和性能之间找到平衡。通过深入理解正则表达式的工作原理,结合Spark SQL的特性,并注意安全性考虑,我们可以更好地利用这一工具来解决复杂的数据处理问题。掌握和灵活运用正则表达式是数据工程师和数据科学家的重要技能。原创 2024-07-09 22:21:42 · 3405 阅读 · 4 评论 -
在SQL中使用explode函数展开数组的详细指南
在处理SQL中的数组数据时,explode函数非常有用。它可以将数组中的每个元素单独提取出来,便于进一步处理。本文将通过几个具体示例,详细介绍如何在Spark SQL中使用explode函数展开数组。通过这些示例,可以快速掌握在SQL中使用explode函数展开数组的基本方法。无论是处理简单数组,嵌套数组,还是包含结构体的数组,explode函数都能提供很大的便利。原创 2024-06-20 19:48:34 · 1266 阅读 · 0 评论 -
大数据SQL格式化规范及示例
文中提到的一些规范,有些是必须遵守的,有些是个人习惯。无论你是开发人员、数据分析师,还是数据仓库开发人员,遵循这些规范可以避免不必要的麻烦。SQL格式没有标准的约定,需要与团队成员达成共识,一起按照相同的约定进行开发,提高SQL代码的可读性和可维护性。原创 2024-06-17 11:45:00 · 885 阅读 · 0 评论 -
SQL中的UPDATE语句:别让你的数据“离家出走”
sql的update操作正式环境用的很少,但是在测试环境还是用的挺多的。原创 2024-06-14 21:35:41 · 445 阅读 · 0 评论 -
写了6年SQL,推荐快速上手MySQL 的SQL语句
写了6、7年SQL,有写复杂,有写简单,但总体而言,基础是统一的,。就像编程之需要会加减乘除,用MySQL懂这些SQL就足够了。原创 2024-06-13 19:43:04 · 2174 阅读 · 10 评论 -
写给初学者的SQL 简明手册,5分钟快速上手
这是一个简明的SQL手册,适合初学者使用。这个手册涵盖了一些基本和常用的SQL操作。原创 2024-06-13 08:00:00 · 462 阅读 · 0 评论 -
详解MySQL中的PERCENT_RANK函数
使用percent_rank函数在简化查询编写、提高性能和减少错误方面具有明显的优势。因此,在可以使用窗口函数的场景下,推荐优先使用而不是手动计算百分等级。原创 2024-06-11 21:42:01 · 1178 阅读 · 0 评论 -
Hive面试题6:动态分区
面试时问的一道情景题:假设我创建了一张表,其中包含了2016年客户完成的所有交易的详细信息,现在我插入了100万条数据,我想知道每个月的总收入。问:如何高效的统计出结果写出步骤即可分析:首先分析这个需求,其实并不难,但是由于题目说了,要高效。而且数据量也不小,直接写sql查询估计肯定会挂。我们可以通过根据每个月对表进行分区来解决查询慢的问题。 因此,对于每个月我们将只扫描分区的数...原创 2019-11-03 11:04:59 · 314 阅读 · 0 评论 -
sql面试题_求秒杀时商品的hold时长
sql面试题20200607表结构以下是数据库中 4 个表的表结构:表一:订单表(表名:table_order),主键是order_id+goods_id,用于记录每个订单的商品明细。同一个订单可能有多个商品,每条信息记录每个订单里不同商品的件单价和销售件数等,销售额=件单价price*销售件amountorder_iduser_idgoods_idadd_timepriceamountdepartment_id1236111203402014/3/22 1:19原创 2020-06-11 21:15:04 · 439 阅读 · 0 评论 -
MySQL常用函数大全
MySQL字符串函数函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;CHAR_LENGTH(s)返回字符串 ...原创 2020-05-06 22:21:34 · 183 阅读 · 0 评论 -
Hive面试题4:讲讲Hive中的排序Sort By、Order By、Cluster By、Distrbute By
hive中的4个排序,面试时经常被问到。自己总结的一个面试时的话语:1.order by 会对输入做全局排序,为保证全局的排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。2. sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,则sort by只保证每个reducer的输出有序,不保证全局有序。3. distri...原创 2019-10-31 23:12:08 · 909 阅读 · 0 评论 -
Hive抽样取数
在生成中表的数据量太大,几亿行的时候,希望取出部分数据来看一下数据特征,采用抽样取数的方法是比较靠谱的。主要有利用随机数抽样、分块抽样、分桶抽样这几个方式。如下是例子和说明:建表语句CREATE TABLE tripdata (country STRING, city STRING, visitors INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY...原创 2020-05-07 23:38:25 · 973 阅读 · 0 评论 -
SQL练习:求断点前的连续天数
背景:有客户购买车险,去另一家公司购买后又回到本公司,求转到其他公司购买保险前在本公司购买车险的连续年份。--创建一个person对象create table person( pname varchar2(10), pid number(20));--添加数据记录insert into person (pid,pname) values (2020,'a')...原创 2020-04-17 22:09:52 · 258 阅读 · 0 评论 -
SQL面试题3:怎么对连续数据进行归类?case when、if
面试常问:写sql语句对某列数据进行归类,比如给大于90分的标上优秀,80-80良等,怎么写,会给你一个具体的题目。这时候就需要用到case when了,case when 我之前觉得很麻烦,后来拿熟悉的Java代码去对比理解,发现记忆更深更理解了。case when的语法的重要性,可以类比java代码。写代码的人都知道,程序有3种结构。顺序结构、选择判断结构、循环结构。对于初学写代码的人会写...原创 2019-11-02 00:09:29 · 679 阅读 · 0 评论 -
SQL面试题2:join连接where和on的区别
遇到的一道面试题,题目很简单,但不仔细思考很容易出错,在平常的工作中也会出现这样的问题。考察join连接时,on和where的区别。题目如下:员工表和部门表,表结构和数据如下:员工表emp+--------+------+---------+| emp_no | name | dept_no |+--------+------+---------+| 1 | 张三 | A1 ...原创 2019-10-27 19:08:43 · 1250 阅读 · 0 评论 -
Hive面试题3:年销售额查询HiveSQL
有销售表T,样例数据如下,请用sql查出每个员工的年累计销售额原表T:员工姓名 月份 销售额emi 201801 10000emi 201802 11000emi 201803 9000emi 201901 10000tommy 201801 12500tommy 201802 10500tommy 201803 8900tommy 201901 9000查询结果要...原创 2019-10-30 18:29:39 · 1319 阅读 · 0 评论 -
Hive面试题1:内部表和外部表
面试的时候遇到这个问题会很惊喜,很容易回答上的问题,可以多说一些。定义:外部表是被external修饰的表,内部表也叫管理表,通过desc formatted查看表是否有external参数, true的话是外部表。内部表和外部表的区别:创建不同 一个是external修饰,一个没有。存储位置不同内部表会将数据和元数据移动到数据仓库指向的路径,外部表可以指定hdfs的其他路径。删除时内...原创 2019-10-28 22:50:35 · 601 阅读 · 0 评论 -
grouping sets操作符简化group by+union all操作
在一个GROUP BY 查询中,根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果进行UNION ALL操作。GROUPING SETS就是一种将多个GROUP BY逻辑UNION写在一个HIVE SQL语句中的便利写法。GROUPING SETS会把在单个GROUP BY逻辑中没有参与GROUP BY的那一列置为NULL值,这样聚合出来的结果,未被GROUP BY的列将显示为NULL。如果说聚合函数(Simple UDAF / Generic UDAF)是HQL聚合数据查询或分析的中枢处原创 2020-05-08 22:48:46 · 1841 阅读 · 0 评论 -
Hive使用row_number()函数有重复值,顺序固定吗
分组topN。求出每个部门工资最高的员工信息建表语句create table employee (empid int ,deptid int ,salary decimal(10,2));插入数据insert into employee values(1,10,5500.00);insert into employee values(2,10,4500.00);insert into...原创 2019-11-02 17:17:17 · 8673 阅读 · 2 评论 -
MySQL中的列转行
mysql中的列转行在工作中遇到的一个MySQL列转行的统计:场景用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下:iduser_idlike_tagscreate_time11101[“八卦”,“数码”,“财经”]2020-09-01 09:19:5221102[“数码”]2020-09-01 09:23:5231103[“数码”,“影视”]2020-09-01 09:29:52原创 2020-09-12 18:44:34 · 4170 阅读 · 0 评论 -
Hive面试题5
业务场景说明:假设客户在我司系统中存在唯一的标示为客户号(CLIENT_NO),客户在向我司投保时,会产生一笔保单,这笔保单的唯一标示为保单号(POLICY_NO),保单信息中包括了保险开始时间(INSURE_BEGIN_DATE)与结束时间(INSURE_END_DATE),以及需要支付的保费(ACTUAL_PREMIUM)。以下是改流程主要涉及到的三张表。请了解表结构以及数据情况并作答:一、...原创 2020-04-04 19:58:58 · 337 阅读 · 0 评论 -
SQL中的case when函数使用
建表语句create table testScore ( tname varchar(30) null, ttype varchar(10) null, tscor int null ); insert into testScore values ('张三','语文',80); insert into testSco...原创 2019-11-13 23:51:00 · 272 阅读 · 0 评论 -
【sql练习】计算时间差的秒数(考虑非工作日)
例如:审批开始时间是2020-02-07 20:09:57,结束时间是2020-02-10 22:30:30,请问审批共耗时多少秒?(扣除所有的法定节假日和周六日)数据准备节假日表数据DROP TABLE IF EXISTS holiday_table;CREATE TABLE holiday_table ( DATE_ID date, DAY_WORK int, isWork...原创 2020-02-03 23:19:43 · 1968 阅读 · 0 评论 -
sql中的行转列、列转行
面试时经常会被问到,hive中行转列、列转行怎么做?除了可以使用case when语句来进行行转列,hive中还有内置的函数,可以很方便的实现行转列多行转单列使用: concat_ws + collect_set单列转多行: lateral view + explode函数说明explode函数可以将array或map展开---- explode(array)将array里的每一个元...原创 2019-10-29 23:36:11 · 1593 阅读 · 1 评论 -
SQL查询A表中有B表中没有的数据
A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引。方法一使用 not in ,容易理解,效率低 执行时间为:1.395秒1 select distinct A.ID from A where A.ID not in (select ID from B)方法二使用 left join…on…...原创 2020-05-05 16:46:16 · 27361 阅读 · 7 评论 -
SQL面试题:求时间差之和(有重复不计算)
面试某某公司BI岗位的时候,面试题中的一道sql题,咋看一下很简单,写的时候发现自己缺乏总结,没有很快的写出来。题目如下:求每个品牌的促销天数表sale为促销营销表,数据中存在日期重复的情况,例如id为1的end_date为20180905,id为2的start_date为20180903,即id为1和id为2的存在重复的销售日期,求出每个品牌的促销天数(重复不算)表结果如下:+----...原创 2019-10-26 10:57:43 · 1139 阅读 · 0 评论 -
SQL求连续活跃天数
SQL计算连续活跃天数原创 2022-04-11 20:15:18 · 2279 阅读 · 4 评论