mysql数据库中有下表:
id creation_date score tags
1 2016-02-09 07:24:59.097000+00:00 -1 html|javascript
2 2016-02-09 08:10:00.000000+00:00 0 xml|css
3 2016-02-10 08:00:15.000000+00:00 2 html|javascript
4 2016-02-11 07:00:45.000000+00:00 -5 html|css
我要检索标签并按分数排序。然后我想按负分数的频率对标签进行排序,这样最差的标签就会出现在最上面。
上述给定查询的预期结果为:
TAG FREQUENCY
html 2
css 1
javascript 1
xml 0
我被从列中检索单个标记的工作困住了。
SELECT tags, COUNT(*)
FROM my_table
WHERE score < 0
1条答案
按热度按时间toiithl61#
当你被如此糟糕的数据格式困住时,你可以用它做点什么。数字表可能会有所帮助,但下面是一个示例,最多可提取前3项:
这是干什么的?这个
on
条款是确保至少n
字符串中的标记,对于给定的n
(过滤掉较大的值)。两个
substring_index()
函数正在从列表中提取第n个标记。然后是聚合。