当前位置: 首页 > 面试题库 >

SQL-计算有序列表中的更改数

韦望
2023-03-14
问题内容

假设我有一个包含两列的表格(日期和价格)。如果我选择一个日期范围,那么是否有一种方法可以计算价格随时间变化的次数?

例如:

   Date   | Price
22-Oct-11 |  3.20
23-Oct-11 |  3.40
24-Oct-11 |  3.40
25-Oct-11 |  3.50
26-Oct-11 |  3.40
27-Oct-11 |  3.20
28-Oct-11 |  3.20

在这种情况下,我希望它返回4个价格变化的计数。

提前致谢。


问题答案:

您可以使用分析功能LEADLAG访问结果集的上一行和下一行,然后使用该功能查看是否有更改。

SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2    select date '2011-10-22' dt, 3.2 price from dual union all
  3    select date '2011-10-23', 3.4 from dual union all
  4    select date '2011-10-24', 3.4 from dual union all
  5    select date '2011-10-25', 3.5 from dual union all
  6    select date '2011-10-26', 3.4 from dual union all
  7    select date '2011-10-27', 3.2 from dual union all
  8    select date '2011-10-28', 3.2 from dual
  9  )
 10  select sum(is_change)
 11    from (
 12      select dt,
 13             price,
 14             lag(price) over (order by dt) prior_price,
 15             (case when lag(price) over (order by dt) != price
 16                   then 1
 17                   else 0
 18               end) is_change
 19*       from t)
SQL> /

SUM(IS_CHANGE)
--------------
             4


 类似资料:
  • 问题内容: 我们需要将某些列的数据类型从int更改为bigint。不幸的是,其中一些表很大,大约有7-10百万行(但不宽)。 Alter表alter列将永远保留在这些表上。有没有更快的方法来实现这一目标? 问题答案: 巧合的是,大约3个小时前,我不得不做一些非常相似的事情。该表是3500万行,它相当宽,并且花了很多时间才能做到这一点: 这就是我最终得到的结果: 这次,这些陈述几乎是即时的。(在速度

  • 问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:

  • 本文向大家介绍python列表中有计算单词串联数量的程序,包括了python列表中有计算单词串联数量的程序的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个字符串列表;我们还必须在列表中找到与其他单词串联的单词数量。连接和连接任意次数时,我们可以重用单词。 因此,如果输入像单词= [“” hello“,” world“,” helloworld“,” famous“,” worldfamou

  • 问题内容: 这个问题已经在这里有了答案 : 列数 (5个答案) 6年前关闭。 如何使用SQL计算表中的列数? 我正在使用Oracle 11g 请帮忙。t。 问题答案: 可以使用低位函数代替大写。例如:从user_tab_columns中选择count(*),其中lower(table_name)=’table_name’;

  • 问题内容: 我正在尝试编写一个脚本,该脚本将显示每列中非空值的数量以及表中的总行数。 我发现了几种方法可以做到这一点: 和 但是这些要求我手动输入每个列名称。有没有一种方法可以对每个列执行此操作而不列出它们? 问题答案: 正如Paolo所说,但这是一个示例:

  • 我有一张类似“ 我想创建一个新的列,在那里它将计数在最后4列中有值的列数。 我如何在Python中做到这一点? 提前道谢。