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

网盘怎么做电影网站天津建设工程信息网怎么登录

网盘怎么做电影网站,天津建设工程信息网怎么登录,眉山网站设计,营销qq购买java关闭窗口函数你没听错。 到目前为止#xff0c;出色的窗口功能是SQL独有的功能。 甚至复杂的函数式编程语言似乎仍然缺少这种漂亮的功能#xff08;如果我错了#xff0c;请纠正我#xff0c;Haskell伙计们#xff09;。 我们撰写了许多有关窗口函数的博客文章#… java关闭窗口函数 你没听错。 到目前为止出色的窗口功能是SQL独有的功能。 甚至复杂的函数式编程语言似乎仍然缺少这种漂亮的功能如果我错了请纠正我Haskell伙计们。 我们撰写了许多有关窗口函数的博客文章并在诸如以下文章中向我们的受众宣讲 可能最酷SQL功能窗口函数 使用此整洁的窗口函数技巧来计算时间序列中的时差 如何在SQL中查找最长的连续事件系列 不要错过带有FIRST_VALUELAST_VALUELEAD和LAG的超凡SQL能力 ROW_NUMBERRANK和DENSE_RANK之间的区别 我最喜欢的窗口函数示例用例之一是运行总计 。 即从以下银行帐户交易表中获取 | ID | VALUE_DATE | AMOUNT | |------|------------|--------| | 9997 | 2014-03-18 | 99.17 | | 9981 | 2014-03-16 | 71.44 | | 9979 | 2014-03-16 | -94.60 | | 9977 | 2014-03-16 | -6.96 | | 9971 | 2014-03-15 | -65.95 | …到此并计算出余额 | ID | VALUE_DATE | AMOUNT | BALANCE | |------|------------|--------|----------| | 9997 | 2014-03-18 | 99.17 | 19985.81 | | 9981 | 2014-03-16 | 71.44 | 19886.64 | | 9979 | 2014-03-16 | -94.60 | 19815.20 | | 9977 | 2014-03-16 | -6.96 | 19909.80 | | 9971 | 2014-03-15 | -65.95 | 19916.76 | 对于SQL这是小菜一碟。 观察SUM(t.amount) OVER(...)的用法 SELECTt.*,t.current_balance - NVL(SUM(t.amount) OVER (PARTITION BY t.account_idORDER BY t.value_date DESC,t.id DESCROWS BETWEEN UNBOUNDED PRECEDINGAND 1 PRECEDING),0) AS balance FROM v_transactions t WHERE t.account_id 1 ORDER BY t.value_date DESC,t.id DESC窗口功能如何工作 别忘了预订我们SQL Masterclass来了解窗口函数 以及更多 尽管有时语法有些令人恐惧但窗口函数确实非常易于理解。 Windows是您的FROM / WHERE / GROUP BY / HAVING子句中产生的数据的“视图”。 它们使您可以访问相对于当前行的所有其他行同时在SELECT子句中或很少在ORDER BY子句中进行计算。 上面的声明实际上是这样做的 | ID | VALUE_DATE | AMOUNT | BALANCE | |------|------------|---------|----------| | 9997 | 2014-03-18 | -(99.17)|19985.81 | | 9981 | 2014-03-16 | -(71.44)| 19886.64 | | 9979 | 2014-03-16 |-(-94.60)| 19815.20 | | 9977 | 2014-03-16 | -6.96 |19909.80 | | 9971 | 2014-03-15 | -65.95 | 19916.76 | 也就是说对于任何给定的余额从当前余额中减去SUM() “ OVER() ”与当前行同一银行帐户在同一分区中的所有行的窗口并且这些行严格位于“当前行。 或者详细而言 PARTITION BY指定“ OVER() ”该字符将窗口范围排成一行 ORDER BY指定窗口的排序方式 ROWS指定应考虑的有序行索引 我们可以使用Java集合吗 我们可以 如果您使用的是jOOλ 我们设计了一个完全免费的开源Apache 2.0许可库因为我们认为JDK 8 Stream和Collector API只是不这样做。 设计Java 8时很多精力都放在了支持并行流上。 很好但是当然不是唯一可以应用函数式编程的有用领域。 我们创建了jOOλ来填补这一空白-无需实现所有新的替代集合API例如Javaslang或功能性Java have。 jOOλ已经提供 元组类型 对于有序的仅顺序的流更有用的东西 通过最近发布的jOOλ0.9.9我们添加了两个主要新功能 大量新收藏家 视窗功能 JDK中许多缺少的收集器 JDK附带了几个收集器但是它们看起来确实笨拙且冗长并且没有人真正喜欢编写像此Stack Overflow问题 以及许多其他问题中所介绍的收集器那样的收集器。 但是链接问题中公开的用例是非常有效的。 您要汇总人员列表中的几件事 public class Person {private String firstName;private String lastName;private int age;private double height;private double weight;// getters / setters 假设您有以下列表 ListPerson personsList new ArrayListPerson();personsList.add(new Person(John, Doe, 25, 1.80, 80)); personsList.add(new Person(Jane, Doe, 30, 1.69, 60)); personsList.add(new Person(John, Smith, 35, 174, 70)); 现在您希望获得以下聚合 人数 最高年龄 最小高度 平均重量 对于任何习惯编写SQL的人来说这都是一个荒谬的问题 SELECT count(*), max(age), min(height), avg(weight) FROM person 做完了 Java有多难 事实证明许多原始代码需要使用香草JDK 8 API编写。 考虑给出的复杂答案 由塔吉尔·瓦列夫Tagir Valeev 通过TriCore 使用jOOλ0.9.9时再次解决此问题变得非常可笑 并且读取的内容几乎类似于SQL Tuple result Seq.seq(personsList).collect(count(),max(Person::getAge),min(Person::getHeight),avg(Person::getWeight));System.out.println(result); 结果如下 (3, Optional[35], Optional[1.69], Optional[70.0]) 请注意这不是针对SQL数据库运行查询这就是jOOQ的目的。 我们正在针对内存中的Java集合运行此“查询”。 现在窗口功能如何 是的本文的标题并没有涉及琐碎的聚合工作。 它承诺了很棒的窗口功能。 但是窗口函数不过是数据流子集上的聚合或排名而已。 您想要维护原始记录而不是将所有流或表聚合到单个记录中而是直接在每个单独的记录上提供聚合。 窗口函数的一个很好的入门示例是本文提供的示例它解释了ROW_NUMBERRANK和DENSE_RANK之间的区别 。 考虑以下PostgreSQL查询 SELECTv, ROW_NUMBER() OVER(w),RANK() OVER(w),DENSE_RANK() OVER(w) FROM (VALUES(a),(a),(a),(b),(c),(c),(d),(e) ) t(v) WINDOW w AS (ORDER BY v); 它产生 | V | ROW_NUMBER | RANK | DENSE_RANK | |---|------------|------|------------| | a | 1 | 1 | 1 | | a | 2 | 1 | 1 | | a | 3 | 1 | 1 | | b | 4 | 4 | 2 | | c | 5 | 5 | 3 | | c | 6 | 5 | 3 | | d | 7 | 7 | 4 | | e | 8 | 8 | 5 | 在Java 8中可以使用jOOλ0.9.9进行相同的操作 System.out.println(Seq.of(a, a, a, b, c, c, d, e).window(naturalOrder()).map(w - tuple(w.value(),w.rowNumber(),w.rank(),w.denseRank())).format() ); 屈服… ---------------- | v0 | v1 | v2 | v3 | ---------------- | a | 0 | 0 | 0 | | a | 1 | 0 | 0 | | a | 2 | 0 | 0 | | b | 3 | 3 | 1 | | c | 4 | 4 | 2 | | c | 5 | 4 | 2 | | d | 6 | 6 | 3 | | e | 7 | 7 | 4 | ---------------- 同样请注意我们没有对数据库运行任何查询。 一切都在内存中完成。 注意两件事 jOOλ的窗口函数返回0基于Java API的期望值而不是SQL全为1。 在Java中无法使用命名列构造临时记录。 不幸的是我确实希望将来的Java将为此类语言功能提供支持。 让我们回顾一下代码中到底发生了什么 System.out.println(// This is just enumerating our valuesSeq.of(a, a, a, b, c, c, d, e)// Here, we specify a single window to be// ordered by the value T in the stream, in// natural order.window(naturalOrder())// The above window clause produces a WindowT// object (the w here), which exposes....map(w - tuple(// ... the current value itself, of type String...w.value(),// ... or various rankings or aggregations on// the above window.w.rowNumber(),w.rank(),w.denseRank()))// Just some nice formatting to produce the table.format() ); 而已 很简单不是吗 我们可以做的更多 看一下这个 System.out.println(Seq.of(a, a, a, b, c, c, d, e).window(naturalOrder()).map(w - tuple(w.value(), // v0 w.count(), // v1w.median(), // v2w.lead(), // v3w.lag(), // v4w.toString() // v5)).format() ); 以上产量是多少 ---------------------------------------- | v0 | v1 | v2 | v3 | v4 | v5 | ---------------------------------------- | a | 1 | a | a | {empty} | a | | a | 2 | a | a | a | aa | | a | 3 | a | b | a | aaa | | b | 4 | a | c | a | aaab | | c | 5 | a | c | b | aaabc | | c | 6 | a | d | c | aaabcc | | d | 7 | b | e | c | aaabccd | | e | 8 | b | {empty} | d | aaabccde | ---------------------------------------- 现在您的分析心脏应该跳了起来。 等一会儿。 我们也可以像在SQL中那样做框架吗 我们可以。 就像在SQL中一样当我们省略窗口定义上的frame子句但我们确实指定了ORDER BY子句时默认情况下将应用以下内容 RANGE BETWEEN UNBOUNDED PRECEDINGAND CURRENT ROW 我们在前面的示例中已经做到了。 可以在第v5列中看到在该列中我们从第一个值到当前值聚合字符串。 因此让我们指定框架 System.out.println(Seq.of(a, a, a, b, c, c, d, e).window(naturalOrder(), -1, 1) // frame here.map(w - tuple(w.value(), // v0w.count(), // v1w.median(), // v2w.lead(), // v3w.lag(), // v4w.toString() // v5)).format() ); 结果很简单 ----------------------------------- | v0 | v1 | v2 | v3 | v4 | v5 | ----------------------------------- | a | 2 | a | a | {empty} | aa | | a | 3 | a | a | a | aaa | | a | 3 | a | b | a | aab | | b | 3 | b | c | a | abc | | c | 3 | c | c | b | bcc | | c | 3 | c | d | c | ccd | | d | 3 | d | e | c | cde | | e | 2 | d | {empty} | d | de | ----------------------------------- 如预期的那样 lead()和lag()不受影响这与count() median()和toString()相反 现在让我们回顾一下运行总计。 通常您不会根据流本身的标量值来计算窗口函数因为该值通常不是标量值而是元组或Java语言中的POJO。 取而代之的是您从元组或POJO中提取值并对其进行汇总。 因此再次在计算BALANCE 我们需要首先提取AMOUNT 。 | ID | VALUE_DATE | AMOUNT | BALANCE | |------|------------|---------|----------| | 9997 | 2014-03-18 | -(99.17)|19985.81 | | 9981 | 2014-03-16 | -(71.44)| 19886.64 | | 9979 | 2014-03-16 |-(-94.60)| 19815.20 | | 9977 | 2014-03-16 | -6.96 |19909.80 | | 9971 | 2014-03-15 | -65.95 | 19916.76 | 这是使用Java 8和jOOλ0.9.9编写运行总计的方法 BigDecimal currentBalance new BigDecimal(19985.81);Seq.of(tuple(9997, 2014-03-18, new BigDecimal(99.17)),tuple(9981, 2014-03-16, new BigDecimal(71.44)),tuple(9979, 2014-03-16, new BigDecimal(-94.60)),tuple(9977, 2014-03-16, new BigDecimal(-6.96)),tuple(9971, 2014-03-15, new BigDecimal(-65.95))) .window(Comparator.comparing((Tuple3Integer, String, BigDecimal t) - t.v1, reverseOrder()).thenComparing(t - t.v2), Long.MIN_VALUE, -1) .map(w - w.value().concat(currentBalance.subtract(w.sum(t - t.v3).orElse(BigDecimal.ZERO)) )); 屈服 ------------------------------------ | v0 | v1 | v2 | v3 | ------------------------------------ | 9997 | 2014-03-18 | 99.17 | 19985.81 | | 9981 | 2014-03-16 | 71.44 | 19886.64 | | 9979 | 2014-03-16 | -94.60 | 19815.20 | | 9977 | 2014-03-16 | -6.96 | 19909.80 | | 9971 | 2014-03-15 | -65.95 | 19916.76 | ------------------------------------ 这里有几件事发生了变化 比较器现在考虑两个比较。 不幸的是JEP-101并没有完全实现 这就是为什么我们需要在此处帮助类型编译器的原因。 Window.value()现在是一个元组而不是单个值。 因此我们需要从中提取有趣的列AMOUNT 通过t - t.v3 。 另一方面我们可以简单地将附加值concat()给元组 但是已经足够了。 除了比较器的详细信息我们一定会在将来的jOOλ版本中解决之外编写窗口函数也是小菜一碟。 我们还能做什么 本文不是对新API可以做的所有事情的完整描述。 我们将很快写一个后续博客文章并提供其他示例。 例如 未描述partition by子句但也可用 您可以指定比此处公开的单个窗口更多的窗口每个窗口都具有单独的PARTITION BY ORDER BY和框架规范 另外当前的实现还很规范即它尚未尚未缓存聚合 对于无序/无框窗口所有分区的值相同 严格升序的窗口聚合可以基于先前的值例如SUM()或toString()关联收集器 就我们而言就是这样。 下载jOOλ试用它并享受一个事实那就是所有Java 8开发人员现在都可以使用最强大SQL功能 https://github.com/jOOQ/jOOL 翻译自: https://www.javacodegeeks.com/2016/01/2016-will-year-remembered-java-finally-window-functions.htmljava关闭窗口函数
http://www.zqtcl.cn/news/953585/

相关文章:

  • 灌南县规划局网站理想嘉苑规划建设那些公司做网站好
  • 大型网站开发的主流语言wordpress 连接flickr
  • 制作一个网站流程怎样做网站运营
  • 可以完成交易的网站 做微信公众号电商网站开发
  • 上海市建设安全协会官方网站机械加工怎么找客户
  • 郑州驾校网站建设互联网公司可通过数据分析人们的哪些方面
  • 珠海杰作网站建设网络公司做一个关于电影的网页设计
  • 电子商务网站建设需要哪些步骤网站开发维护合同书
  • 顺德网站设计成都网站优化方式
  • 宁波建网站哪家好用点网站后台 更新缓存
  • 如何推广网站链接做旅游网站的目的
  • 网站规划与设计课程设计中企动力网站建设 长春
  • 最新网站建设哪家公司好wordpress 顶部图片
  • 有什么网站可以做一起作业公司简介优秀文案
  • 太仓住房和城乡建设局网站seo网页推广
  • 网络公司 网站源码网页源代码修改了影响别人吗
  • 网站后台是怎样制作的app开发公司排行榜做软件的公司
  • 有专门做网站的公司吗西安分类信息seo公司
  • 重庆璧山网站制作公司哪家专业商城网站建设 优帮云
  • 双语网站建设费用安徽省芜湖建设定额网站
  • 常州市城乡建设局网站wordpress 阿里云cdn
  • 福州制作网站设计哪里比较好百度网址大全官方网站
  • 一般做美食网站的产品需求我想做个网站
  • 成品网站制作公司应用公园是免费的吗
  • 做毕业网站的流程网站建设价格一览表
  • 企业服务网站开发做网站怎样建立服务器
  • 电子商务他们的代表网站360免费wifi官网
  • 网站后端开发软件cc域名做门户网站
  • 保定设计网站超云建站
  • 建筑工程网官网入口优化网站关键词排名软件