Sql 计算值表的出现次数
我有一个表(国家),它只包含一列(国家)。 我有一个表格(散文),它有几个列,尽管我只对“RawText”列感兴趣 我可以很容易地运行以下程序:Sql 计算值表的出现次数,sql,sqlite,Sql,Sqlite,我有一个表(国家),它只包含一列(国家)。 我有一个表格(散文),它有几个列,尽管我只对“RawText”列感兴趣 我可以很容易地运行以下程序: select count(Id) Occurences from Essays where Essays.RawText like '%canada%'; 我希望能够运行一个查询,遍历长长的国家列表 理想情况下,我可以返回一个表,例如: Canada 10 USA 45 Mexico 39 如何搜索所有国家/地区?您可以使用GROUP BY
select count(Id) Occurences
from Essays
where Essays.RawText like '%canada%';
我希望能够运行一个查询,遍历长长的国家列表
理想情况下,我可以返回一个表,例如:
Canada 10
USA 45
Mexico 39
如何搜索所有国家/地区?您可以使用
GROUP BY
按不同的列类型对条目进行计数,但您需要采取额外的步骤,使用大小写将您的搜索“分类”为不同的短语:
SELECT
RawText
FROM
Essays
WHERE
(Essays.RawText ILIKE '%canada%') OR (Essays.RawText ILIKE '%USA%')
GROUP BY
CASE
WHEN Essays.RawText LIKE '%canada%' THEN 'canada'
WHEN Essays.RawText LIKE '%USA%' THEN 'USA'
ELSE NULL
END
要获得文章和国家的每一个组合,请将两个表格连接在一起。相似模式可以从国家名称构建;在SQL中,字符串连接是|
。要聚合搜索结果,请使用分组
SELECT Country,
COUNT(*)
FROM Countries
JOIN Essays ON RawText LIKE '%' || Country || '%'
GROUP BY Country;
看起来你正在寻找一个分组。当一篇文章提到这两个国家时会发生什么?这里真正的问题是,有很多国家(不仅仅是我例子中的3个),要将它们全部装箱需要做太多的工作,然后试图跟踪加或减将是一个问题。