【问题标题】:Determining Connections between data in a single table确定单个表中数据之间的连接
【发布时间】:2012-09-14 06:48:51
【问题描述】:

我是一名 BA/程序员类型,在遗留系统上进行数据分析。我一直在自学 SQL 来提供帮助,但我似乎遇到了一个比我能力更大的问题。

我有两张表(为简单起见进行了概括):

表格对象

Object_PK

表格组件

Component_PK
Object_FK
Component_Type

Component_Type_Code 中有 100 多个不同的值。鉴于任何对象都可以有 N 个组件,我如何查看哪些 Component_Type(s) 与其他 Component_Type(s) 一起出现?

例如,以下查询告诉我哪些 component_types 与 component_type 'Component_type_1' 一起出现:

select component_type_code, count(*)
from components
where object_fk in (
        select object_fk
        from components
        where component_type_code = 'component_type_1'
)
group by component_type_code

我想要查询以显示所有连接

我对格式化表示歉意。任何帮助表示赞赏。我看过多维数据集和汇总,但不知道如何应用于这种情况。

【问题讨论】:

  • 请提供示例数据和所需的输出。
  • 输出类似于: Component_Type_Code Component_Type_Code Count Code1 Code2 5 Code1 Code3 10 Code2 Code3 7 此输出显示 column1 代码出现在也有 column2 代码计数 (*) 次的对象中。
  • 老实说,我什至无法弄清楚如何在 stackoverflow 上正确格式化。帮助说用两个空格''结束每行以启动换行符。我遇到了重大问题,可能是 ID 10 T 错误或类似问题 (EBKAC)

标签: sql analysis


【解决方案1】:

所以,如果我理解正确,您希望查看在每个组件中多次出现的每个 Component_Type。因此;

SELECT component_type_code, COUNT(*)
FROM components
WHERE object_fk IN(
        SELECT object_fk
        FROM components
        GROUP BY component_type_code
        HAVING COUNT(*) > 1
)

编辑

考虑到您的需求的复杂性,很难将所有这些都整合到一个声明中。

因此,您拥有适用于一个 component_type 的代码,因此我会将这些数据插入到一个临时表中,然后为每个其他 component_type 重复此操作。最后;

选择 * 来自#TempComponents

我意识到这并不理想,毫无疑问您可能想要添加新的 component_type,但它会起作用。

【讨论】:

  • 不完全是,但我们正在到达那里。我想看看组件类型之间的关系。那么对于所有component_types,Component_type_1 在所有具有component_type_2 的对象中出现了多少次。所以最后我会有一个报告说: Component_type 出现 component_type count() Component_type1 Component_typ2 5 Component_type1 Componenet_type3 100 等等... *手指交叉格式化工作
【解决方案2】:

感谢您的好答案。我还把这个问题通过电子邮件发送给了几个 DBA 朋友,其中一位回复了以下 SQL:

 Select a.Component_Type, b.Component_Type, count(1)
 From Components a, Components b
 Where b.Object_FK = a.Object_FK
 And b.Component_Type > a.Component_Type
 Group By a.Component_Type, b.Component_Type

此语句返回关联的链接及其计数。它实际上非常酷的分析,我希望我不必概括表格和结果。感谢大家 - 我希望这个 SQL 对将来的人有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多