当前位置: 首页 > 知识库问答 >
问题:

SQL统计记录以前出现的次数

贺恩
2023-03-14

我有一个包含report_datejob_no列的表,想知道如何返回一个列,该列显示在当前出现之前job_no出现了多少次。

我已尝试计数(作业编号),但我不知道如何将其设置为仅计数当前报告日期之前的事件。

到目前为止,我不得不将数据导出到excel中,并为报告日期执行一个Countifs

请帮忙!:)

共有3个答案

终育
2023-03-14

您需要的是一个相关子查询:

SELECT s.job_no,(select count(*) from YourTable t
               where t.report_date < s.report_date and t.job_no = s.job_no)
FROM YourTable s

这样,对于每个作业,相关查询将计算在当前行日期之前出现的次数。

姬俊远
2023-03-14

分析计数可能会满足您的要求:

select job_no
     , report_date
     , count(*) over (partition by job_no
                          order by report_date
                           rows between unbounded preceding and 1 preceding) cnt
  from your_table

此版本中的窗口子句将阻止计算当前行,尽管对于所述情况,只需减去1,并在无界的前一行和当前行之间使用默认的行窗口将同样有效。

司徒翼
2023-03-14

只需使用累积计数:

select t.job_no, t.report_date,
       count(*) over (partition by t.job_no order by t.report_date) as cumecnt
from t;

严格地说,这包括当前日期,因此您可能希望为以前的列表减去1(或者使用更复杂的窗口子句)。

 类似资料:
  • 问题内容: 我需要帮助以获取针对这种情况的解决方案。我有一个包含记录的表,有一个字段sku,在此记录中,我有sku出现多次。表结构是这样的rid | id | sku | name rid是auto_increment,其中id是varchar,如果表上多次有任何sku可用,则记录看起来像这样 我使用此sql语句获取仅出现一次的记录 这带来了仅添加一次的记录,因此根据以上给出的记录,仅掉6是输出

  • count 方法用于检索指定字符串在另一字符串中出现的次数,如果检索的字符串不存在,则返回 0,否则返回出现的次数。 count 方法的语法格式如下: str.count(sub[,start[,end]]) 此方法中,各参数的具体含义如下: str:表示原字符串; sub:表示要检索的字符串; start:指定检索的起始位置,也就是从什么位置开始检测。如果不指定,默认从头开始检索; end:指定

  • 找出 第1列中的最大值第一次出现的位置, 比方说这个 是索引19中的 27.78 从这个索引19 开始 往下 寻找第1列中所有介于27.78的值区间出现的次数 比方说 从 索引19 开始 往下查询 从索引24到326区间的值小于27.78 把这个区间作为 次数 1 516-519 这个区间作为 2 523-760区间作为3, 769-772 作为4 774-1114 作为5,共出现5次在这个区间的

  • 我有一张这样的桌子,但有1mi行: 我想知道有多少团队被拜访了N次。 例如,如果我想知道一次访问了多少个团队,结果将是1(因为只有团队2)。如果我想要三次,结果将是2(因为团队1和4都访问了三次)。 大概是 (然后=2,=3,依此类推)。。。但是因为我不能在WHERE之后使用COUNT,所以我不知道怎么做。有人能帮忙吗? 如果有帮助,它不一定需要连接到探视日期。可以是“有多少团队出现一次/两次/三

  • 问题内容: 表名称调用 上面是一个示例,我需要找出的是如何找到连续无应答计数大于6的数字? 目前,我已经能够获得以下信息,但它不是连续的。 问题答案: 您可以使用变量来执行此操作。 该查询使用4个变量 1)@cur_outcome,它最初设置为空字符串。此后,选择将分配当前行的system_outcome。 2)@prev_outcome,最初设置为空字符串。此后,选择将其设置为@cur_outc

  • 我有下面的类和对象的ArrayList: 我想要的是从我的列表中得到一个字符串和整数地图,其中包含门票中的目的地和我列表中每个目的地的出现次数。我想它会这样开始,但是我不知道如何继续: