SQL - 查找记录模式

标签 sql sqlite

这里是新手,请耐心等待...

是否可以找到记录的模式?

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

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

  1. 表格按时间戳排序(播放日期时间)
  2. “下一个”定义为:

a) 连续(歌曲 x 的记录编号为 n,歌曲 y 的记录编号为 n+1)或

b) 由一个广告分隔(歌曲 x 的录制编号为 n,广告的录制编号为 n+1,歌曲 y 的录制编号为 n+2)

似乎无法找到获取我需要的信息的方法。有什么想法吗?

最佳答案

如果是一首又一首歌曲,假设有一个名为 tblSongs 的表,其中包含“序列”和“名称”列。您可能想尝试类似的事情

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 计数相同,则

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 首歌曲序列的任何模式,那么

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进行一些统计分析(这超出了我的能力)。

我相信这些将帮助您入门。

关于SQL - 查找记录模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263780/

相关文章:

SQL Server 内存中 OLTP 哈希索引设置 BUCKET_COUNT 值

sql - 如果一列为空,则在 SELECT 上选择不同的列

Android 删除 SQLite 表

sqlite - 无限保存 CoreData Context

android - 如何使用 FTS4 修复 SQLite Android 上的错误 "Wrong number of arguments to function rank()"?

java - 如何在指定日期之前在Android中设置通知

SQL:如何检查相关行是否存在?

java - 将较大的 SQL 转换为通过 UNION ALL 组合的多个较小的 SQL

sql - Rails ActiveRecord 多态关联关系

android - 使用或不使用 (typeAffinity = ColumnInfo.BLOB) 将图像数据存储在 Room 数据库中