我有一张表(国家/地区),其中只包含1列(国家/地区)。 我有一张桌子(论文)有几个专栏,但我只对" RawText"感兴趣。列。
我可以轻松运行以下内容:
select count(Id) Occurences
from Essays
where Essays.RawText like '%canada%';
我希望能够运行1个遍历长列表国家/地区的查询。
理想情况下,我可以返回一个表格,如:
Canada 10
USA 45
Mexico 39
...
如何搜索所有国家/地区?
答案 0 :(得分:0)
您可以使用GROUP BY
按不同的列类型对条目进行计数,但您需要采取额外步骤,使用CASE
将搜索“分类”为不同的短语:
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
答案 1 :(得分:0)
要获得论文和国家的每一个组合,请将两个表一起加入。 LIKE模式可以从国家名称构建;在SQL中,字符串连接是||
。要聚合搜索结果,请使用分组。
SELECT Country,
COUNT(*)
FROM Countries
JOIN Essays ON RawText LIKE '%' || Country || '%'
GROUP BY Country;