在规范化数据时获取 DISTINCT 公司信息

Posted

技术标签:

【中文标题】在规范化数据时获取 DISTINCT 公司信息【英文标题】:Getting DISTINCT company info while normalizing data 【发布时间】:2019-02-23 23:40:13 【问题描述】:

我正在规范化我在一个平面文件中获得的一些数据,其中公司和联系信息混合在一起,如下所示:

company_id | company_name | person_id | first_name | last_name | sic_code
123 | "Acme, Inc." | 111 | "John" | "Smith" | 54789
123 | "Acme, Inc." | 222 | "Jane" | "Doe" | 54789
234 | "Global, LLC" | 333 | "James" | "Brown" | 94574

所以,我希望我的 SQL 语句返回如下所示的唯一公司信息:

123 | "Acme, Inc." | 54789
234 | "Global, LLC" | 94574

我尝试了以下方法,但仍然得到重复的数据。例如,Acme, Inc. 仍然多次出现。

SELECT DISTINCT company_id, company_name, sic_code
FROM MyTable
ORDER By company_id

我如何不仅获得 DISTINCT 公司 ID,而且获得所有独特公司的扩展数据?

【问题讨论】:

在这种情况下不应该,你能举一个例子来说明你得到了什么吗?我猜你得到的“重复”是由于列值的某种差异。因此,例如,一个值中可能有额外的空格,或者拼写不同。因此,您可能需要先对列进行修剪,或检查拼写差异。 对于您提供的示例数据,您将获得您要求的输出。所以这里有一些无法解释的东西。数据是如何导入的? 【参考方案1】:

这可行:

select company_id, company_name, sic_code from (
    select 
      company_id,
      company_name,
      sic_code,
      row_number() over (partition by company_id order by company_id) rn
    from tbl
) t
where rn = 1

【讨论】:

以上是关于在规范化数据时获取 DISTINCT 公司信息的主要内容,如果未能解决你的问题,请参考以下文章

国内首个《政务APP技术指标评价规范》团体标准正式出台

MS Access 2010:获取(Windows)阻止数据库的用户

公司用的 MySQL 团队开发规范,非常详细,建议收藏!

公司用的 MySQL 团队开发规范,非常详细,建议收藏!

精彩系列论文之一国家电网有限公司 冷喜武,陈国平等:智能电网监控运行大数据分析系统数据规范和数据处理

MySQL - GROUP_CONCAT 返回重复数据,不能使用 DISTINCT