【问题标题】::SQL how to count the amount of distinct rows the have a multiple if column in common( that is joined from from another table):SQL如何计算具有多个共同if列的不同行的数量(从另一个表连接)
【发布时间】:2012-08-11 22:19:42
【问题描述】:

好的,这是我的问题。也许我的大脑只是被炸了,但我正在努力解决这个问题

我有一个表(假设 TableA 有一组列,假设名称是:

pk1、Pk2、a、b、c、APPLE(有3个来自另一个表的设置值)等(PK1和PK2为主键)

然后我有另一张桌子(比如说tableB)

PK1(与 TableA 上的 PK1 链接)、ag、DOG、sf、STAR(也有一组 nr 值)等

好的,所以现在我想加入这 2 个表,这很容易。 PK1中的值可以重复,只要PK1和PK2的组合是唯一的,就是这样。

好的,棘手的部分来了。我想获得 PK1+PK2+a 不同组合的列表

但我也想知道它们中有多少属于每种类型的 STAR。

好的,这部分是可选的(给你明亮的火花):

为了真正让它变得棘手,每种类型的星星都必须细分为 APPLES 的类型

1) 我该怎么做? 2) 是否可以只用 1 个查询来完成,我必须使用光标之类的东西吗?

【问题讨论】:

    标签: sql join count distinct


    【解决方案1】:

    你试过什么?也许这有帮助?

    select distinct pk1,pk2,a from tableA
    

    ,

    select tableA.pk1,pk2,a,star,count(*)
    from tableA join tableB on tableA.pk1 = tableB.pk1
    group by tableA.pk1,pk2,a,star
    

    ,

    select tableA.pk1,pk2,a,star,apples,count(*)
    from tableA join tableB on tableA.pk1 = tableB.pk1
    group by tableA.pk1,pk2,a,star,apples
    

    【讨论】:

    • arg,我太傻了。我如何忘记分组?猜猜这是因为我的大脑太累了。呵呵
    • 问题思考,只是想知道它是否可能。它现在基本上很好地分组为明星和苹果。但它在 2 个不同的行上(这很好)。但我想知道。将它放在 1 行中会有多困难。比如 xxxxxxxxxxx 2star1apple 1star2apple。我要去看看我自己是否也能弄清楚,但我只是想我会把它和脑筋急转弯一样贴在这里
    • 顺便说一句,我尝试使用 DISTINCT 而不是 GROUP BY。 GROUP BY 完全让我忘记了
    • 我认为它的 WAAAAAAY 付出更多的额外努力,以获得将它排成一行所获得的微薄收益
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多