数据分析之SQL
文章平均质量分 79
笔记
卖山楂啦prss
数据分析师——唯有知识,让我们免于平庸
展开
-
[SQL] in和exists的区别
转载自:in和exists的区别文章目录一、表展示二、in三、exists四、区别及应用场景五、not in 和not exists一、表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: 二、in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。 具体sql语句如下: SEL转载 2021-06-11 13:49:22 · 191 阅读 · 1 评论 -
SQL变量的使用(自定义变量)
文章目录一、系统变量1.1 全局变量1.2 会话变量二、自定义变量(重点)2.1 用户变量①声明并初始化②赋值(更新变量的值)③使用(查看变量的值)★2.2 局部变量三、案例3.1 案例13.2 案例2四、用户变量和局部变量的对比一、系统变量说明:变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加GLOBAL关键字,会话变量需要添加SESSION关键字,如果不写,默认会话级别使用步骤查看所有系统变量SHOW GLOBAL VARIABLES;#全局变量SHOW SES.原创 2021-04-02 09:29:44 · 30980 阅读 · 1 评论 -
SQL之with子句
with 语句with 语句相当于建立了一张 临时虚拟表即利用with子句为子查询的数据集作为一个内存临时表. 在内存中解析,提高执行效率.,并且提高SQL语句的可读性,用完即销毁。语法可以同时定义多个临时表With Subtable1 as (select 1...), //as和select中的括号都不能省略 Subtable2 as (select 2...), //后面的没有with,逗号分割,同一个主查询同级别地方,with子查询只能定义一次 … Subtablen as (原创 2021-03-29 10:55:42 · 38286 阅读 · 2 评论 -
【数据库与SQL】力扣刷题SQL篇(7)
1.每位学生的最高成绩select a.student_id ,a.course_id ,a.grade from (select *, dense_rank() over (partition by student_id order by grade desc,course_id ) as dese_rankfrom Enrollments ) as awhere a.dese_rank = 1order by student_id 2.每日新用户统计select ac原创 2021-03-29 09:20:00 · 413 阅读 · 1 评论 -
SQL之pivot语句与unpivot语句
文章目录pivot行转列例子1例子2例子3unpivot列转行pivot行转列pivot 用于将列值旋转为列名(即行转列),在SQLServer 2000可以用聚合函数配合CASE语句实现即SQL语句行列转换的两种方法 case…when与pivot函数的应用但pivot运算符能够实现CASE语句相同的功能,并且可以用更少的代码语法引用自:https://blog.csdn.net/yx183/article/details/82423420SELECT <非透视的列>,原创 2021-03-28 23:00:19 · 2598 阅读 · 2 评论 -
【数据库与SQL】力扣刷题SQL篇(6)
文章目录1.连续空余座位2.销售员3.树节点4.判断三角形5.平面上的最近距离6.直线上的最近距离7.二级关注者1.连续空余座位select a.seat_id from (select *, lag(free ,1) over(order by seat_id) as qian, lead(free,1) over(order by seat_id) as houfrom cinema) as awhere a.free =1 and (a.qian=1 or a.hou原创 2021-03-25 10:58:02 · 312 阅读 · 0 评论 -
【数据库与SQL】力扣刷题SQL篇(5)rows between
文章目录1.员工奖金2.查询回答率最高的问题3.查询员工的累计薪水1.员工奖金select a.name,b.bonusfrom Employee as aleft join Bonus bon a.empId = b.empIdwhere b.bonus<1000 or b.bonus is nullselect a.name,b.bonusfrom Employee as aleft join Bonus bon a.empId = b.empIdwhere a.e原创 2021-03-23 10:01:44 · 832 阅读 · 1 评论 -
窗口函数rows between 、range between的使用
1 rows betweenrows between 控制窗口函数的范围使用rows between可以根据自己的需求任意的控制窗口函数的范围UNBOUNDED :不受控的,无限的;PRECEDING : 在…之前;FOLLOWING: 在…之后;rows between …… and ……unbounded preceding 前面所有行unbounded following 后面所有行current row 当前行n following 后面n行n p原创 2021-03-23 09:57:42 · 31542 阅读 · 2 评论 -
【数据库与SQL】力扣刷题SQL篇(4)分组求中位数/新增/留存率/登录人数
文章目录1.员工薪水中位数(分组求中位数)2.给定数字的频率查询中位数3.至少有5名直接下属的经理4.当选者5 用户留存分析求每天新增用户数,以及他们第2天、30天的留存率找近90天,30天,7天的登录人数求用户近一个月平均登录时间间隔(按天)遇到中位数的题目,可以想到正向与反向1.员工薪水中位数(分组求中位数)此题,考察不用内置函数,利用SQL求中位数窗口函数法 1select Id,Company,Salaryfrom ( select *, row_numbe原创 2021-03-22 10:55:54 · 1261 阅读 · 0 评论 -
【数据库与SQL】力扣刷题SQL篇(3)
文章目录15 游戏玩法分析116 游戏玩法分析217 游戏玩法分析318 游戏玩法分析415 游戏玩法分析1select player_id,min(event_date) as first_login from activitygroup by player_id select a.player_id ,a.event_date as first_login from (select *, dense_rank() over(partition by player_id ord原创 2021-03-17 13:26:09 · 234 阅读 · 0 评论 -
【数据库与SQL】力扣刷题SQL篇(2)
6 超过经理收入的员工7 查找重复的电子邮箱8 从不订购的客户9 部门工资最高的员工10 部门工资前三高的所有员工11 删除重复的电子邮箱原创 2021-03-14 17:04:37 · 466 阅读 · 0 评论 -
【数据库与SQL】力扣刷题SQL篇(1)
力扣SQL题目整理文章目录1.组合两个表2.第二高的薪水3.第N高的薪水4.分数排名5.连续出现的数字1.组合两个表select p.FirstName, p.LastName, a.City, a.Statefrom Person as Pleft join Address as aon p.PersonId = a.PersonId 多表连接2.第二高的薪水方法一第二高,小于最大值,筛选出来后在求最大值select max(Salary) as SecondHig.原创 2021-03-14 17:04:28 · 1064 阅读 · 0 评论 -
SQL【复习】经典MySQL练习50题之1-11
问题1:试问:SELECT * FROM employees; 和 SELECT * FROM employees WHERE commission_pct LIKE “%%” AND last_name LIKE “%%”;结果是否一样?并说明原因答:结果不一样 ,因为表中可能存在NULL值,如果表中没有NULL值,则结果是一样的,若and改为or,则结果一样。#--------------------------------SELECT *FROM employeesWHER原创 2021-01-01 21:23:18 · 248 阅读 · 0 评论