当前位置: 首页 > news >正文

龙岩网站设计大概价格网站建设打造

龙岩网站设计大概价格,网站建设打造,手工活外发一手货源,网站链接用处–天池龙珠计划SQL训练营 5.1窗口函数 5.1.1窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数。OLAP 是OnLine AnalyticalProcessing 的简称#xff0c;意思是对数据库数据进行实时分析处理。 为了便于理解#xff0c;称之为窗口函数。常规的SELECT语句都是对整张表进…–天池龙珠计划SQL训练营 5.1窗口函数 5.1.1窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数。OLAP 是OnLine AnalyticalProcessing 的简称意思是对数据库数据进行实时分析处理。 为了便于理解称之为窗口函数。常规的SELECT语句都是对整张表进行查询而窗口函数可以让我们有选择的去某一部分数据进行汇总、计算和排序。 窗口函数的通用形式 窗口函数 OVER ([PARTITION BY 列名]ORDER BY 排序用列名)[]中的内容可以省略。 窗口函数最关键的是搞明白关键字****PARTITON BY和ORDER BY*****的作用。 PARTITON BY是用来分组即选择要看哪个窗口类似于GROUP BY 子句的分组功能但是PARTITION BY 子句并不具备GROUP BY 子句的汇总功能并不会改变原始表中记录的行数。 ORDER BY是用来排序即决定窗口内是按那种规则(字段)来排序的。 举个栗子: SELECT product_name,product_type,sale_price,RANK() OVER (PARTITION BY product_typeORDER BY sale_price) AS rankingFROM product得到的结果是: 我们先忽略生成的新列 - [ranking] 看下原始数据在PARTITION BY 和 ORDER BY 关键字的作用下发生了什么变化。 PARTITION BY 能够设定窗口对象范围。本例中为了按照商品种类进行排序我们指定了product_type。即一个商品种类就是一个小的窗口。 ORDER BY 能够指定按照哪一列、何种顺序进行排序。为了按照销售单价的升序进行排列我们指定了sale_price。此外窗口函数中的ORDER BY与SELECT语句末尾的ORDER BY一样可以通过关键字ASC/DESC来指定升序/降序。省略该关键字时会默认按照ASC也就是 升序进行排序。本例中就省略了上述关键字 。 5.2窗口函数种类 大致来说窗口函数可以分为两类。 一是 将SUM、MAX、MIN等聚合函数用在窗口函数中 二是 RANK、DENSE_RANK等排序用的专用窗口函数 5.2.1专用窗口函数 **RANK函数 **英式排序 计算排序时如果存在相同位次的记录则会跳过之后的位次。 例有 3 条记录排在第 1 位时1 位、1 位、1 位、4 位…… DENSE_RANK函数**中式排序** 同样是计算排序即使存在相同位次的记录也不会跳过之后的位次。 例有 3 条记录排在第 1 位时1 位、1 位、1 位、2 位…… ROW_NUMBER函数 赋予唯一的连续位次。 例有 3 条记录排在第 1 位时1 位、2 位、3 位、4 位 运行以下代码 SELECT product_name,product_type,sale_price,RANK() OVER (ORDER BY sale_price) AS ranking,DENSE_RANK() OVER (ORDER BY sale_price) AS dense_ranking,ROW_NUMBER() OVER (ORDER BY sale_price) AS row_numFROM product5.2.2聚合函数在窗口函数上的使用 聚合函数在开窗函数中的使用方法和之前的专用窗口函数一样只是出来的结果是一个累计的聚合函数值。 运行以下代码 SELECT product_id,product_name,sale_price,SUM(sale_price) OVER (ORDER BY product_id) AS current_sum,AVG(sale_price) OVER (ORDER BY product_id) AS current_avg FROM product;可以看出聚合函数结果是按我们指定的排序这里是product_id当前所在行及之前所有的行的合计或均值。即累计到当前行的聚合。 5.3窗口函数的的应用 - 计算移动平均 在上面提到聚合函数在窗口函数使用时计算的是累积到当前行的所有的数据的聚合。 实际上还可以指定更加详细的汇总范围。该汇总范围成为框架(frame)。 语法 窗口函数 OVER (ORDER BY 排序用列名ROWS n PRECEDING ) 窗口函数 OVER (ORDER BY 排序用列名ROWS BETWEEN n PRECEDING AND n FOLLOWING)PRECEDING“之前” 将框架指定为 “截止到之前 n 行”加上自身行 FOLLOWING“之后” 将框架指定为 “截止到之后 n 行”加上自身行 BETWEEN 1 PRECEDING AND 1 FOLLOWING将框架指定为 “之前1行” “之后1行” “自身” 执行以下代码 SELECT product_id,product_name,sale_price,AVG(sale_price) OVER (ORDER BY product_idROWS 2 PRECEDING) AS moving_avg,AVG(sale_price) OVER (ORDER BY product_idROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_avg FROM product执行结果 注意观察框架的范围。 ROWS 2 PRECEDING ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 5.3.1窗口函数适用范围和注意事项 原则上窗口函数只能在SELECT子句中使用。窗口函数OVER 中的ORDER BY 子句并不会影响最终结果的排序。其只是用来决定窗口函数按何种顺序计算。 5.4GROUPING运算符 5.4.1ROLLUP - 计算合计及小计 常规的GROUP BY 只能得到每个分类的小计有时候还需要计算分类的合计可以用 ROLLUP关键字。 SELECT product_type,regist_date,SUM(sale_price) AS sum_priceFROM productGROUP BY product_type, regist_date WITH ROLLUP得到的结果为 这里ROLLUP 对product_type, regist_date两列进行合计汇总。结果实际上有三层聚合如下图 模块3是常规的 GROUP BY 的结果需要注意的是衣服 有个注册日期为空的这是本来数据就存在日期为空的不是对衣服类别的合计 模块2和1是 ROLLUP 带来的合计模块2是对产品种类的合计模块1是对全部数据的总计。 ROLLUP 可以对多列进行汇总求小计和合计。 练习题 5.1 请说出针对本章中使用的product商品表执行如下 SELECT 语句所能得到的结果。 SELECT product_id,product_name,sale_price,MAX(sale_price) OVER (ORDER BY product_id) AS Current_max_priceFROM product** 答按照 product_id 升序排列计算出截⾄当前⾏的最⾼ sale_price 。 ** 5.2 继续使用product表计算出按照登记日期regist_date升序进行排列的各日期的销售单价sale_price的总额。排序是需要将登记日期为NULL 的“运动 T 恤”记录排在第 1 位也就是将其看作比其他日期都早 -- ①regist_date为NULL时显示“1年1⽉1⽇”。 SELECT regist_date, product_name, sale_price,SUM(sale_price) OVER (ORDER BY COALESCE(regist_date, CAST(0001-01-01 AS DATE))) AS current_sum_priceFROM Product;-- ②regist_date为NULL时将该记录放在最前显示。 SELECT regist_date, product_name, sale_price,SUM(sale_price) OVER (ORDER BY regist_date NULLS FIRST) AS current_sum_priceFROM Product; 5.3 思考题 ① 窗口函数不指定PARTITION BY的效果是什么 答 窗⼝函数不指定 PARTITION BY 就是针对排序列进⾏全局排序 ② 为什么说窗口函数只能在SELECT子句中使用实际上在ORDER BY 子句使用系统并不会报错。 答 本质上是因为 SQL 语句的执⾏顺序。 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 如果在 WHERE, GROUP BY, HAVING 使⽤了窗⼝函数就是说提前进⾏了⼀次排序排序之后再去除 记录、汇总、汇总过滤第⼀次排序结果就是错误的没有实际意义。⽽ ORDER BY 语句执⾏顺序在 SELECT 语句之后⾃然是可以使⽤的。
http://www.dnsts.com.cn/news/52391.html

相关文章:

  • 中国建站平台网wordpress如何设置目录
  • 响应式设计 手机网站商铺装修效果图设计
  • 公司的宣传网站应该怎么做专业网站设计公司哪里有
  • 个人业务网站制作自己做网站制作需要多少钱
  • 购物网站html网站名查询
  • 深圳网站设计制作元建设学校网站论文
  • 网站服务器有哪几种迅雷下载宝 做网站
  • 自己怎么健网站视频教程宿迁网站建设cy0001
  • 网站搭建平台源码注册公司名字查询网
  • 青岛做网站排名wordpress+icon图标
  • 建一个网站大约多少钱白酒包装设计网站
  • 公司网站的维护网站建设加空间
  • 徐州建站公司哪家好顺德建设网站公司
  • 色一把看片网 做最好的在线看片网站哪建网站好
  • 做英文网站费用专注七星彩网站开发出租
  • 襄城县城乡建设管理局网站内蒙古做网站
  • 做篮球网站用的背景图wordpress 动态主题
  • 企业建网站作用wordpress修改颜色
  • 文章网站如何与压力做成品视频软件推荐哪个好一点
  • 搭建网站免费黄骅贴吧招聘
  • 有关做能源的网站空间安装wordpress
  • 郴州网站制作梅州网站建设公司
  • 网站设计就业形势国内新闻摘抄2022年
  • WordPress做大站做网站引流的最佳方法
  • 苏州吴中区专业做网站上海网站建设公司 翱思
  • 狠狠做最新网站嵊州做网站
  • 注册网站的公司名字北京市保障性住房建设投资中心网站
  • 南昌企业制作网站设计企业网站建设一条龙全包
  • 一站式网站建设有哪些酒店网站收入如何做帐务处理
  • 苏州建站公司认准苏州聚尚网络公司企划书模板