Sqlite:统计多个列并按条目分组

时间:2016-10-21 10:08:36

标签: sql sqlite

给出sqlite表结构如下

id tag1 tag2 tag3 1 foo bar baz 2 foo baz moo 3 baz woo bar 4 bar foo 5 foo

我想要的是计算每个标签的出现次数而不依赖于其列。

如何在所有标记字段上查询标记并对其进行分组?

我想要的是像

foo: 4 bar: 3 baz: 3 moo: 1 woo: 1

我不知道如何查询所有标记字段。

SELECT (tag1,tag2,tag3) as tag, COUNT(id) AS amount FROM tbl GROUP BY tag显然没有成功..:/

我读到了关于CONCAT,GROUP_CONCAT,SELECT DISTINCT,......但它们似乎都不是我想要的。

我甚至不知道该搜索什么/如何描述我想要的东西所以我的研究无处可去。

任何可以提供帮助的人?会很好! Thx提前

此致

1 个答案:

答案 0 :(得分:0)

使用union allgroup by

select tag, count(*)
from ((select tag1 as tag from tbl) union all
      (select tag2 as tag from tbl) union all
      (select tag3 as tag from tbl) 
     ) t
where tag is not null
group by tag
order by count(*) desc;

注意:您应该重新访问您的数据结构。通常,具有相同类型值的多个列不是最佳结构。您可能想要另一个表,每个id / tag有一行:

id    tag
 1    foo
 1    bar
 1    baz
 . . .