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)
我正在尝试在 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)