Weighing/Valuing 在 Postgresql 中对文本数组列使用计数的共享字符串

Weighing/Valuing shared strings using count on text array columns in Postgresql

我正在尝试在 PostgreSQL 数据库中的 table 公司数据中查找匹配的字符串。我正在使用下面的查询,它可以很好地用于该目的,但我想对一些字符串进行加权。例如,金融服务应该值 3 个“点”,而不是像移动这样更通用的东西。

我能够通过使用标签 != 'Internet' where 子句排除一些结果,但我想不出一种方法来为某些字符串提供额外的权重。

SELECT
    count(*)
FROM (
    SELECT
        company_tags.tag
    FROM
        unnest(ARRAY ['Internet','Web Services & Apps','Technology','SAAS','Mobile', 'B2C', 'Financial Services']) AS company_tags (tag)
    WHERE
        tag != 'Internet'
        AND tag != 'Web Services & Apps'
        AND tag != 'Technology'
    INTERSECT
    SELECT
        company_pairing_option_tags.tag
    FROM
        unnest(ARRAY ['Internet','Technology','Web Services & Apps','Mobile','B2C', 'Financial Services']) AS company_pairing_option_tags (tag)
    WHERE
        tag != 'Internet'
        AND tag != 'Web Services & Apps'
        AND tag != 'Technology') AS count;

您可以将 count(*) 替换为:

sum (
 case tag 
     when 'Financial Services' 
        then 3 
     when 'other 3 points tag' 
        then 3 
     else 1 
  end)