【问题标题】:SQL: Need help listing all the unique names and the number of times they appear in two columnsSQL:需要帮助列出所有唯一名称以及它们在两列中出现的次数
【发布时间】:2021-07-05 09:22:25
【问题描述】:

我有 2 列填充了名称。该列表似乎是随机的,一个人的名字可能会出现在 A 列或 B 列中(但绝不会同时出现在两者中)。我想写一个查询,告诉我所有的名字和每个人在任一列表中的次数。这是我所说的一个例子

Col A Col B
Mark Cheryl
Andy Tom
James Mark
Tom Ann
Cheryl Jeff
Andy Mark

我正在寻找一个查询/函数,它将为我提供名称列表以及它们在任一列中出现的次数。

任何帮助总是被感激的!

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql


【解决方案1】:

假设你的表名是 names 并且你的列是 a,b 那么这应该可以工作:

select n.name, count(n.name)
from (
         select a as name from names
         union all
         select b as name from names
     ) n
group by n.name;

【讨论】:

    【解决方案2】:
    SELECT
        Name,
        COUNT(1) as cnt
    FROM (
        SELECT ColA As Name FROM my_table UNION ALL
        SELECT ColB As Name FROM my_table
    ) t
    GROUP BY 
        Name
    

    db fiddle

    【讨论】:

    • 泰戈登!我太笨了,不知道这是否可以立即使用,但我正在努力尝试一下。右括号后面的“t”有什么作用?
    • t 与语法相关。用于创建所有名称的表的子查询需要一个表别名,我使用了t,但您可以使用您认为合适的理想别名。
    • @paintrn 这是一个现场小提琴展示它是如何工作的:db-fiddle.com/f/tAzhJWrkQn5MLDap7i3aHW/0
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2022-01-01
    相关资源
    最近更新 更多