0

我正在尝试计算特定序列发生的次数。在表格中说一列 - 'testC' - 'testT' 作为字符,例如 'DS-PP'、'WQ-PP'、'FF-PP'、'DS-PP'、'DS-PP'、'FF -PP' 我希望结果像

DS-PP - 3
FF-PP - 2
WQ-PP - 1

我怎样才能做到这一点。到目前为止,我得到了

SELECT count(testC) from testT where testC like '%-PP%' group by testC

这给了我计数但没有说是哪个。我需要在选择中添加一些东西来获取 DS-PP 等等

注意:testC 列可以包含任何内容(它是一个文本字段)说 - 'DP-PP 在这里。我希望它只显示 DP-PP 而不是整个句子是可能的。

检查这个 http://sqlfiddle.com/#!2/f0c29/1

4

2 回答 2

2

你没有错过WHERE testC条款吗?你也错过了选择testC

    SELECT testC, count(testC) from testT WHERE testC like '%-PP%' group by testC

在这里演示

对于您的第二个建议。您可以先找到 -PP 然后减去这样的字符:

 select substr(TestC, locate('-pp', TestC) - 2, 5) as testc, count(*)
 from testT
 where locate('-pp', TestC) > 2
 group by substr(TestC, locate('-pp', TestC) - 2, 5)

在这里演示

于 2013-07-25T23:24:51.387 回答
1

您需要在中TestC添加select

SELECT TestC, count(testC)
from testT
where testC like '%-PP%'
group by testC

编辑:

绝对是一个更合理的问题。

select substr(TestC, locate('-pp', TestC) - 2, 5), count(*)
from testT
where locate('-pp', TestC) > 2
group by substr(TestC, locate('-pp', TestC) - 2, 5)

这假定您想要 . 之前的两个字符'-pp''-pp'它过滤掉从第一个或第二个字符开始的任何行。

于 2013-07-25T23:28:21.710 回答