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

计算SQL中的重复次数

夹谷星河
2023-03-14

我试图解决一个问题,但没有成功。

我有两张号码单

{1,2,3,4}
{5,6,7,8,9}

我有一张桌子

ID     Number
1        1
1        2
1        7
1        2
1        6
2        8 
2        7
2        3
2        9

现在我需要计算多少次从第二个列表的数字后从第一个列表的数字,但我应该只计算一个一个id

在上面的示例表中,结果应该是2

三个匹配的pars,但是因为我们只有两个不同的ID,结果是2而不是3

PAR:

1     2
1     7
1     2
1     6
2     3
2     9

笔记我使用MSSQL

编辑。还有一列确定顺序的日期

Edit2-解决方案

我写这个查询

SELECT * FROM table t
left JOIN table tt ON tt.ID = t.ID 
    AND tt.Date > t.Date 
    AND t.Number IN (1,2,3,4) 
    AND tt.Number IN (6,7,8,9) 

在这之后,我计划按id分组,每个id只使用一个匹配项,但执行需要很多时间

共有1个答案

邬令
2023-03-14

下面是一个可以实现此目的的查询:

select     a.id, min(a.number) as a, min(b.number) as b
from       mytable a
inner join mytable b
        on a.id = b.id
       and a.date < b.date
       and b.number in (5,6,7,8,9)
where      a.number in (1,2,3,4)
group by   a.id

输出为:

id  a   b
1   1   6
2   3   9

所以这两对都在一行中输出,值a属于第一组数字,列b的值属于第二组数字。

这里有一把小提琴

稍后,您在问题中添加了一个查询尝试。关于这一尝试的一些评论:

  • 您不需要左联接,因为您确实希望两个值都匹配<代码>内部联接通常具有更好的性能,因此请使用它
 类似资料:
  • 我知道这是一个复杂的查询,因此我有一个单独的列,但该列包含几乎99%的null值(这是非常无效的),因此我想知道是否可以通过查询来实现这一点。 我有这样的桌子: 现在的查询是,如果对于3个连续的产品ID,对应的值是0(按照TransactionId ASC的顺序),那么对于,它将被计为1,即。 我们如何查询这个? 一个可选的简短问题:p 如果我有很多空值的列,可以吗?

  • 我已经将代码中的read整数修复为不再是I而是一个单独的变量“index”,并理解为什么我会收到Over Ofbound异常,但我有点厚,不明白如何在添加哨兵值0的同时修复它。

  • 我是开发Android应用程序的新手,我想做的是创建一个可以读取电源按钮按下时间的应用程序,以制作一个可访问性应用程序。 也许如果我能控制或计算屏幕打开和屏幕关闭事件,这可能会有所帮助。

  • 我想计算一个句子中重复单词或重复单词的总数。这里我可以打印单词,但不能计算这些单词。 我期望输出:- 给定字符串中的重复单词:大黑色 给定字符串中的重复单词总数:2 输出如下: 给定字符串中的重复单词:大黑色 给定字符串中的重复单词总数:10 总计数显示为10,而不是2。

  • 问题内容: 我有一个数组如下 预期结果 尝试如下 问题答案: 无需使用jQuery即可完成此任务-此示例将构建一个对象,其中包含数组中每个不同元素的出现次数

  • 我有一个数据帧: 谢谢!