gpt4 book ai didi

sql - T-Sql 对多行的字符串序列进行计数

转载 作者:行者123 更新时间:2023-12-05 01:30:01 25 4
gpt4 key购买 nike

如何在sql中的多行中找到数据子集?

我想在找到另一个字符串之前计算一个字符串(或数字)的出现次数,然后计算在找到另一个字符串之前该字符串出现的次数。
所有这些字符串都可以按随机顺序排列。

这就是我想要实现的目标:

我有一个包含一列( columnx )的表,其中包含如下数据:

A
A
B
C
A
B
B

我想要的查询结果应该是这样的:
2 A
1 B
1 C
1 A
2 B

这甚至可以在 sql 中实现,还是仅编写一个小 C# 应用程序来执行此操作会更容易?

最佳答案

因为,根据您的评论,您可以添加一列,该列将明确定义 columnx 的顺序。 values go,您可以尝试以下查询(前提是您使用的 SQL 产品支持 CTE 和排名函数):

WITH marked AS (
SELECT
columnx,
sortcolumn,
grp = ROW_NUMBER() OVER ( ORDER BY sortcolumn)
- ROW_NUMBER() OVER (PARTITION BY columnx ORDER BY sortcolumn)
FROM data
)
SELECT
columnx,
COUNT(*)
FROM marked
GROUP BY
columnx,
grp
ORDER BY
MIN(sortcolumn)
;

你可以在工作中看到方法 on SQL Fiddle .

sortcolumn是自增整数列,保证没有间隙,可以替换第一个 ROW_NUMBER()仅表达 sortcolumn .但是,我想,这不能保证一般。此外,您可能确实想要对时间戳而不是整数进行排序。

关于sql - T-Sql 对多行的字符串序列进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10007659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com