计算值表

时间:2016-04-14 02:04:47

标签: sql sqlite

我有一张表(国家/地区),其中只包含1列(国家/地区)。 我有一张桌子(论文)有几个专栏,但我只对" RawText"感兴趣。列。

我可以轻松运行以下内容:

select count(Id) Occurences
from Essays
where Essays.RawText like '%canada%';

我希望能够运行1个遍历长列表国家/地区的查询。

理想情况下,我可以返回一个表格,如:

Canada 10
USA    45
Mexico 39

...

如何搜索所有国家/地区?

2 个答案:

答案 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;