高级语句 sql学习听课笔记
窗口函数 over([partition by 字段名] [order by 字段名 asc|desc])
分区
Tip:窗口函数只能写在select子句中
- 排序窗口函数
Rank()over()——跳跃式排序 1,1,3,4
Eg:查询2017年选区为“S14000024”的所有候选人所在团体(party)和其选票数(votes)还有候选人得票数在选区内对应的排名。结果按照团体party排序。
Dense_rank()Over()——并列连续型排序1,1,2,3
Row_number()over()——连续型排序1,2,3,4
- 偏移分析函数
Lag(字段名,偏移量,[默认值])over()
Lead(字段名,偏移量,[默认值])over()
EG:查询意大利每周新增确诊数
表连接
- 内连接—select 字段名 from 表名1 (inner) join 表名2 On 表名1.字段名=表名2.字段名
Inner join 连接两个表留下同时互相匹配上的行得到一张新表(笛卡尔积原理)
- 左连接—select 字段名 from 表名1 left join 表名2 On 表名1.字段名=表名2.字段名
Left join 保留左边的表返回所有行,右边的表只留下匹配上的行得到一张新表(右边没有左边所有的行就填写Null空值),保证左边表数据的完整性
- 右连接—select 字段名 from 表名1 right join 表名2 On 表名1.字段名=表名2.字段名
Right join 保留右边的表返回所有行,左边的表只留下匹配上的行得到一张新表(左边的表没有右边所有的字段时就填写null空值),保证右边表数据的完整性
Eg: 查询有球员名叫Mario进球的队伍1,队伍2及球员姓名
子查询
Tips:子查询优于主查询
From子查询必须使用别名,同样可以省略as ,不使用别名会报错
From子查询结果可以是多行多列
Eg:查询所有国家人口均<=25000000的大洲,及其国家名和人口
- 下载DataGrip后云端数据库配置(不细细描述了,看戴师兄视频操作的已完成。!噢对我的tableau学生版已经申请完成哈哈哈)
DataGrip操作运行:
- 查看表的字段: 1双击该表2右键新建查询控制台—输入代码describe 控制台名称.表名称
Eg:查询所有门店每天的GMV和CPC消耗
- 查询2020年饿了么平台上每个门店GMV最高的那天的日期和GMV(窗口函数)
提升:牛客网练习sql真题(认真对待每道遇到的SQL题,每道题都要搞懂)
在实战中不断提升
保持手感,持续练题。冲冲冲!!!
Excel连接数据库
第一步装驱动配置驱动
第二步获取数据。数据选项卡—获取数据—来自其他源—从ODBC—选择刚刚创建的Mysqldatabase—在sql语句中写语句限制(excel比较脆弱)假如字段数据较多时,添加Limit,添加筛选以避免excel崩盘(eg: select * from ddm.shop)—输入数据库的用户名密码—数据表返回到excel中
第三步 怎么使用
数据源是直接连接数据库的数据源,跟随数据表联动,在数据选项卡—全部刷新(刷新的是数据库的数据源表)
Tableau连接数据库
Mysql驱动已经在excel部分安装完毕
直接选择连接到服务器,选择Mysql,填写数据库参数。
可以直接拖拽数据库,也可以写自定义sql.