我有一个SQLite表,很像下面示例中的一个表,其中包含一个由逗号分隔的项列表。我想知道的是,如果可能的话,可以使用SQLite3中内置的功能;构建一个SELECT查询,允许我:
A. )返回表格中所有行的特定颜色显示的总次数。
B。)对结果进行排序,使它们首先按照它们在结果集中出现的频率列出,然后按字母顺序列出出现次数相同的任何项目。
我意识到这可能听起来令人困惑,所以我将在下面详细解释abit,但首先这是我正在使用的示例表。
表名:demo_table
ID | Colors
---|-------------------------------------------
1 | red, green, blue, pink, yellow
2 | blue, purple, white, red
3 | green, black, orange, brown
4 | silver, white, blue
5 | brown, green, blue, black, red, purple, orange
结果设置:
红色(3),绿色(3),蓝色(4),粉红色(1),黄色(1),紫色(2),白色(2),黑色(2),橙色(2),棕色( 2),银(1)
结果我想在运行查询后获得:蓝色,绿色,红色,黑色
说明:
如果结果本身不明显,我想要做的是返回结果集中的前4个项目,这些项目首先按照它们在结果集中出现的频率排序,然后从Blue
开始被列出4次它会先来。 Green
是下一个,因为它被列出了3次,Red
接下来是因为它被列出了3次,但由于Red在字母表中出现在Green之后,它出现在Green的reult之后,最后是最后的结果是Black
,因为即使其他项目在reult-set中显示的次数相同,它也会在字母表中首先列出,因此它成为列表中的最后一项,因为我们只是查找为了第4个结果。
我想要创建的所有这些是表格列中项目的“前5名”列表。最后,我想让最终用户选择如何显示列表,但我首先想要了解基础知识,所以我知道是否甚至可以单独使用SQLite3来创建这样的系统。
最后,如果有可能,这样的查询会是什么样子?