我正在使用以下格式的表:
我还有一张只列出国家/地区的表格:
现在,我想根据国家/地区汇总总计NUMBER,因此输出如下所示:
实际的表有更多的列,每个表有5000多个条目。
我的逻辑是从第二个表中选择每个国家,然后对第一个表的第二列进行匹配,并为匹配项汇总数字,但是我不太确定如何实现此目的。任何指导表示赞赏。
答案 0 :(得分:0)
您可以使用like运算符来加入和汇总函数总和以获取每个国家/地区的总和。
SELECT C.Country, SUM(CN.Number)
FROM Table1 CN
INNER JOIN Table2 C ON CN.Country LIKE CONCAT('%', C.Country,'%')
GROUP BY C.Country
答案 1 :(得分:0)
您的数据格式很糟糕。第一个表实际上应该是联结/关联表。 SQL存储列表的方式是表中的行,而不是逗号分隔的字符串。
也就是说,有时我们会陷入别人的非常非常糟糕的设计决策中。在这种情况下,MySQL提供find_set_set()
作为方便的函数:
select c.country, sum(n.number)
from countries c left join
numbers n
on find_in_set(c.country, replace(n.country, ', ', ',')) > 0
group by c.country;