![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL
数据分析阿宇君
一枚三岁的数据分析狮,记录学习与成长。
展开
-
SQL:EXISTS的用法
https://www.cnblogs.com/xuanhai/p/5810918.htmlhttps://blog.csdn.net/wqc19920906/article/details/79800374原创 2020-08-14 11:09:37 · 320 阅读 · 0 评论 -
SQL-开窗函数
1. 什么是开窗函数开窗函数/分析函数:over()窗口函数也称为OLAP函数(分析函数),意思是对数据库数据进行实时分析处理。窗口函数就是为了实现OLAP而添加的标准SQL功能。目前在 MSSQLServer、Oracle、DB2 等主流数据库中都提供了对开窗函数的支持,不过非常遗憾的是 MYSQL 暂时还未对开窗函数给予支持。1.2 开窗函数语法开窗函数语法:其中[]中的内容可以省略<开窗函数> over ([partition by <列清单>]原创 2020-08-13 22:18:28 · 14163 阅读 · 0 评论 -
MySQL:求众数、平均数、中位数
1.样例表ceshi_salaries表中字段如下所示2.众数以求员工工资的众数为例2.1使用having首先用COUNT()对工资计数,找到出现最多的次数SELECT COUNT(*) FROM ceshi_salaries GROUP BY salary再用嵌套即可SELECT salary,COUNT(*) AS cntFROM ceshi_salariesGROUP BY salaryHAVING count(*) >= ALL(SELECT COUNT(*) F原创 2020-08-13 20:36:33 · 8766 阅读 · 0 评论 -
MySQL:求每个用户第一单和最近一单的消费金额
题目现在数据库中有一张用户交易表order,其中有userid(用户ID)、amount(消费金额)、paytime(支付时间),请写出对应的SQL语句,查出每个用户第一单和最近一单的消费时间和金额。题解测试表如下:思路:先找到每个用户第一单消费时间,再用联结找到第一单消费金额;同理可知每个用户最近一单的消费时间和金额;再用联结汇总即可。1.先找到每个用户第一单消费时间,再用联结找到第一单消费金额select a.userid,t2.min,a.amount from (select use原创 2020-08-06 17:03:28 · 3939 阅读 · 0 评论 -
SQL语法与常用函数总结
学习把SQL语法与常用函数整理成一个表格,巩固复习,也放在博客上给后人栽树。原创 2020-04-03 15:28:23 · 219 阅读 · 0 评论 -
Hive:split函数
语法split(string str, string pat)说明按照pat字符串分割str,会返回分割后的字符串数组举例1.基本使用select split('zhongguo', 'n') from test;结果:[“zho”, “gguo”]2.截取字符串中的某个值select split('zhongguo', 'n')[0] from test;结果:zho3...原创 2020-04-03 15:07:52 · 5821 阅读 · 0 评论 -
SQL中的case when函数
SELECT product.Id, Name, (CASE WHEN Price1>200 THEN'贵' WHEN Price1>100 and Price1<200 THEN '一般' ELSE'便宜' END) AS new_priceFROM productGROUP BY Br...原创 2020-04-03 14:47:52 · 334 阅读 · 0 评论 -
SQL中的nvl函数
两个参数的nvl函数:nvl(str1,str2)含义如果第一个参数不为空的话,则该表达式返回第一个参数的值,若第一个参数为空时,则返回第二个参数的值应用场景可以设置字段如果为空的默认值。例如如果一个人在注册游戏时不填写用户名称时默认取你注册用的微信名称一样。也可以用于外关联(join等)时两个表中有重复字段但是值不一样时,可以设置该字段取值的优先级别。例如两个事件表,一个是紧急事件表...原创 2020-04-03 14:40:22 · 1060 阅读 · 0 评论 -
SQL中group/order by 后面跟数字的理解
group by,order by 后面跟数字,指的是根据 select 后面查询的列进行分组、排序等,1 代表第一个列,2代表第二个列,依次类推。SELECT id,Name, Price1FROM productWHERE YEAR(CreateTime)=2016 AND MONTH(CreateTime)=5ORDER BY Price1 DESCLIMIT 0,5;等价于...原创 2020-04-03 12:59:46 · 6246 阅读 · 2 评论 -
LeetCode:MySQL 262. 行程和用户(难度:困难)
题目描述Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。Users 表存所有用户。每个用户有唯一键 Users_Id。Banned...原创 2020-03-18 16:10:16 · 349 阅读 · 0 评论 -
LeetCode:MySQL分组内取前几名问题(难度:困难)
题目:查询部门工资前三高的所有员工Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。Department 表包含公司所有部门的信息。编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:解释:IT 部门中,Max 获得了最高的工资,Randy...原创 2020-03-18 10:38:41 · 1001 阅读 · 0 评论 -
LeetCode:MySQL的IN字符竟然还有这种操作
题目描述解题思路作为一名小菜鸡,我刚开始解题的代码如下select Department.name as Department, Employee.name as Employee, max(Salary) as Salaryfrom Department inner join Employee on Employee.Departme...原创 2020-03-17 20:17:39 · 410 阅读 · 0 评论 -
MySQL学习笔记:使用视图
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~22使用视图22.1什么是视图视图是虚拟的表,可以很好封装SQL查询语句。22.2使用视图创建视图:CREATE VIEW 视图名称 AS +视图语句查看视图语句:SHOW CREATE VIEW 视图名称;删除视图:DROP VIEW 视图名称;更新视图时,可以先用DROP再用CR...原创 2020-03-14 15:21:14 · 2525 阅读 · 3 评论 -
MySQL学习笔记:更新和删除数据
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~20 更新和删除数据使用更新和删除一定要慎重!一定要慎重!一定要慎重!因为没有撤销操作,可以先备份再更新/删除;或者先查询确定无误再更新/删除。一定要有WHERE语句,否则会更新/删除所有行。否则会更新/删除所有行。否则会更新/删除所有行!!!20.1更新数据UPDATE20.1.1更新...原创 2020-03-14 15:14:48 · 241 阅读 · 0 评论 -
MySQL学习笔记:插入数据
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~19 插入数据数据插入INSERT分为:插入完整的行;插入行的一部分;插入多行;插入某些查询结果19.1插入完整的行INSERT INTO customers(cust_name, cust_address, cus...原创 2020-03-14 15:11:20 · 303 阅读 · 1 评论 -
MySQL学习笔记:全文本搜索
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~18 全文本搜索并非所有搜索引擎都支持全文搜索。最常用的两个搜索引擎MyISAM(支持全文搜索)和InnoDB(不支持)。18.1启用全文本搜索将要全文本搜索的列添加索引:在创建表时指定FULLTEXT或者在已有数据表上立即索引。18.2进行全文本搜索MATCH()指定被搜索的列,AG...原创 2020-03-14 15:04:18 · 254 阅读 · 2 评论 -
MySQL学习笔记:组合查询
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~17组合查询17.1 使用UNION操作符将多条SELECT语句组合成一个结果集。查找Price1>5000的商品SELECT id,name,Price1,CategoryIdFROM productWHERE Price1>5000LIMIT 0,5;查找Catego...原创 2020-03-14 15:00:38 · 235 阅读 · 0 评论 -
MySQL学习笔记:高级联结(重要)
16 高级联结16.1 使用表别:可以缩短语句,单条SELECT多次使用相同表SELECT p.Name AS p_name, c.Name AS c_name, b.Name AS b_name, Price1, ModelFROM product AS p,product_category AS c,brand AS bWHERE p.Cat...原创 2020-03-14 14:56:54 · 1231 阅读 · 1 评论 -
MySQL学习笔记:联结(重要)
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~第15章 联结(join)表关系表的设计就是要保证把信息分解成多个表,一类数据一个表。例如品牌表brand、商品表product、品类表product_category。各表通过某些常用的值(即关系设计中的关系relation)互相关联。品牌表brand的主键为ID,品牌表brand的主键又叫商品...原创 2020-03-14 14:51:34 · 155 阅读 · 0 评论 -
MySQL学习笔记:使用子查询
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~14 使用子查询查询(query):任何SQL语句都是查询,但该术语一般指SELECT语句。目前的SELECT语句是简单查询,即从单个数据库表中检索数据的单条语句。而子查询(subquery)是嵌套在其他查询中的查询。例如:查找“小白熊”牌温奶器的商品有多少个。需要以下三步:1.在品牌表br...原创 2020-03-14 14:47:13 · 146 阅读 · 0 评论 -
MySQL学习笔记:分组数据
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~13 分组数据13.1 GOUP BY()数据分组SELECT ValidityUnit,COUNT(*) AS num_productFROM productGROUP BY ValidityUnit;#使用GOUP BY()语句必须在WHERE之后,ORDER BY之前SELECT ...原创 2020-03-14 14:44:48 · 146 阅读 · 0 评论 -
MySQL学习笔记:汇总数据
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~12.汇总数据12.1 聚集函数聚集函数:运行在行组上,计算和返回单个值的函数。 AVG/COUNT/MAX/MIN/SUN():返回某列的平均值/行数/最大值/最小值/某列之和12.1.1 AVG():返回某列的平均值SELECT AVG(Price1) AS Ave_Price1, ...原创 2020-03-14 14:38:34 · 160 阅读 · 0 评论 -
MySQL学习笔记:数据处理函数
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎收藏学习,有问题随时留言评论,一起探讨。第11章 数据处理函数使用函数处理数据,最好注释11.1 文本处理函数Length():返回串的长度; Locate():返回串的一个子串;Upper():将文本换为大写; Lower():将文本转换为小写;Left():返回串左边的字符;Right():返回串右边的字符SELECT...原创 2020-03-14 14:33:45 · 149 阅读 · 0 评论 -
MySQL学习笔记:创建计算字段
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎收藏学习,有问题随时留言评论,一起探讨。第10章 创建计算字段10.1 concat()函数用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。MySQL使用Concat()函数实现拼接字段,而多数DBMS(包括SQL)使用+或者||实现。SELECT CONCAT(Spec,'(',Unit,')')...原创 2020-03-14 14:29:26 · 340 阅读 · 3 评论 -
MySQL学习笔记:用正则搜索
第九章:用正则搜索9.1 REGEXP关键字:后跟的东西为正则表达式9.2 .在正则中表示:匹配任意一个字符SELECT id,screen_name,text,topicsFROM weiboWHERE text REGEXP '疫情'ORDER BY id;#上例匹配text列值中包含'疫情'的子串,然后返回该行SELECT id,screen_name,text,topics...原创 2020-03-14 14:24:45 · 113 阅读 · 0 评论 -
MySQL学习笔记:用通配符进行过滤
第8章:用通配符进行过滤通配符:用来匹配值的一部分的特殊字符;搜索模式:由字面值、通配符或两者组合构成的搜索条件;8.1 LIKE操作符:后跟的搜索模式利用通配符匹配。使用通配符,必须使用LIKE操作符8.2 百分号%通配符:任何字符出现的任意次数SELECT id,screen_name,text,topicsFROM weiboWHERE screen_name LIKE '%卫...原创 2020-03-14 14:20:50 · 134 阅读 · 0 评论 -
MySQL学习笔记:过滤数据+数据过滤
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎收藏学习,有问题随时留言评论,一起探讨。第六章 过滤数据SELECT语句的WHERE子句指定搜索条件。6.1检查单个值:输出性别为m的数据(文本型数据)SELECT user.screen_name,user.gender,user.follow_count,followers_countFROM weibo.userWHERE u...原创 2020-03-14 14:17:24 · 297 阅读 · 0 评论 -
MySQL学习笔记:检索数据+排序数据
本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎收藏学习,有问题随时留言评论,一起探讨。第四章 检索数据#单个列查询SELECT user.id FROM weibo.user;#多个列查询SELECT user.screen_name,user.gender,user.follow_count,followers_countFROM weibo.user;#输出起始位置为0后...原创 2020-03-14 14:10:06 · 158 阅读 · 0 评论