【发布时间】:2014-07-12 07:18:24
【问题描述】:
我有一个包含 20000 条记录的数据库。我希望我的代码计算哪些记录共享其“标题”值中的第一个单词。 到目前为止,这是我的代码,它返回 1000 条记录(我认为不可能将 1000 个单词作为记录的第一个单词共享,每个计数约为 20)
我需要做些什么来计算第一个单词被共享多少次作为第一个单词? (如在 记录 1:标题:“Bob Joe 去废话” 记录 2:标题:“鲍勃反击” 记录 3:标题:“乔和鲍勃回家”
它会返回,因为“Bob”有 2 个计数,而不是 3,因为 Joe 是记录 3 中的第一个单词
SELECT SUBSTR(TITLE, 1, INSTR(TITLE, ' ') -1) WORD
, COUNT(SUBSTR(TITLE, 1, INSTR(TITLE, ' ') -1)) NUM
FROM FILM
GROUP BY SUBSTR(TITLE, 1, INSTR(TITLE, ' ') -1);
【问题讨论】:
-
你的代码有什么问题?好像对我有用。
-
你的标题可以有前导空格和混合大小写吗?也许您应该在列上使用
LTRIM()和UPPER()。也许你可以使用REGEXP_SUBSTR(TITLE, '^[^ ]+')。 -
这里的
COUNT()函数不需要任何东西,但这不是你真正的问题。您需要查看您的一些数据,并找出您认为应该分组的内容。例如,大写(或没有大写)。或者单词中包含标点符号之类的东西。我想你的数据集可能对某个第一个词有偏见"The"。
标签: sql oracle count substring