首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -查找记录的模式

SQL -查找记录的模式
EN

Stack Overflow用户
提问于 2009-08-12 01:13:11
回答 2查看 2.2K关注 0票数 1

新手来了,所以请容忍我..。

是否有可能找到记录的模式?

我需要在广播节目软件的输出中找到重复的歌曲序列。

电台经理想知道某些歌曲“旁边”是否会随着时间的推移而重复(如果DJ变得懒惰并重复某些序列)。

表由时间戳排序,(datetime-aired)

  • 'next‘定义为:

(歌x有n的rec-no,n+1的歌y有rec-no )或

b)由一个广告分隔(歌x有n的rec-no,广告有n+1的rec-no,n+2的歌y是rec-no )。

似乎想不出办法来获取我需要的信息。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-12 01:22:32

如果是一首接一首歌,那么假设一个名为tblSongs的表带有一个'sequence‘& 'name’列。你可能想试一试

代码语言:javascript
复制
select top N first.name, second.name, count(*)
from tblSongs as first 
     inner join tblSongs as second
         on second.sequence=first.sequence + 1
group by first.name, second.name
order by count(*) desc

如果歌曲序列X,Y被计算为与Y,X相同

代码语言:javascript
复制
select top N first.name, second.name, count(*)
from tblSongs as first 
     inner join tblSongs as second
         on second.sequence=first.sequence + 1
         or second.sequence=first.sequence - 1
group by first.name, second.name
order by count(*) desc

如果您正在寻找任何2首歌曲序列的模式,那么

代码语言:javascript
复制
select first.name, second.name, abs(second.sequence - first.sequence) as spacing_count
from tblSongs as first 
     inner join tblSongs as second
         on second.sequence=first.sequence + 1
         or second.sequence=first.sequence - 1

然后对spacing_count做一些统计分析(这超出了我的能力)。

我相信这会让你开始。

票数 2
EN

Stack Overflow用户

发布于 2009-08-12 01:47:08

我不确定您是否可以执行直接的数据库查询来找到它,但是如果您可以将ResultSet转储到一个按时间戳排序的文件中,那么应该很容易找到它。

这样想吧。假设歌曲是一个字符,按时间戳排序的歌曲列表是一个字符串。例如,您有一个歌曲列表,其中A、B和C是独特的歌曲,如下所示:

代码语言:javascript
复制
ABCACBABC                 (Ignore ads for now)

现在,您可以将其分解为相邻两个字符(称为bigram)的子序列。

你得到的重要信息是:

代码语言:javascript
复制
AB, BC, CA, AC, CB, BA, BC

现在您可以清楚地看到BC是重复的。要以编程方式完成此操作,您可以将每个bigram抛到HashMap (或Hashtable/HashSet)中,并针对HashMap查询每个新的bigram,以查看它是否包含它。如果地图已经包含了它,那么它就是一个重复。如果不是,那么它是一个新的,所以把它放在地图上。

在本练习结束时,您将知道哪些组合是重复的。

现在来看看广告存在的情况,让我们将所有的广告称为X。

代码语言:javascript
复制
ABCXABCXXABCABC

在有多个广告的地方,(用硬行中断代替(将字符串划分为多个字符串)。你会得到

代码语言:javascript
复制
ABCXABC

<__XX -被一个新的line>取代

代码语言:javascript
复制
ABCAB

现在用空字符串替换所有单个广告。你会得到

代码语言:javascript
复制
ABCABC
ABCAB

现在独立处理每个字符串以识别重复。

希望它能成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1263780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档