具有特定ID的行数,而不具有SQL的组

时间:2016-11-28 11:50:16

标签: mysql sql group-by

我有一个'结算'表,代表我订阅者的所有帐单实例。订户可以有多个账单。

我有一个简单的SQL请求:

SELECT count(billing_id),subscriber_id
FROM billing
   group by subscriber_id

因此,我列出了我所有订户的订单数量。 我想要一个没有按订阅者分组的所有账单的列表,但我希望每行中出现上一个请求的结果。

实施例: 我之前请求的结果:

sub_id      nb_billings
  1             3
  2             2

我想要的是什么:

sub_id      nb_billings
  1             3
  1             3
  1             3
  2             2
  2             2

由于

4 个答案:

答案 0 :(得分:1)

您可以使用子查询来执行此操作:

SELECT 
    (SELECT count(t2.billing_id) FROM billing t2 WHERE t2.subscriber_id = t1.subscriber_id),
    t1.subscriber_id
FROM billing t1

答案 1 :(得分:1)

我会这样做;

SELECT
    b.subscriber_id
    ,a.billing_count
FROM billing b
JOIN (SELECT subscriber_id, count(billing_id) billing_count FROM billing GROUP BY subscriber_id) a
    ON b.subscriber_id = a.subscriber_id

子查询计算出订阅者的billing_id计数,然后将其连接到原始表的所有行(使用subscriber_id)。这应该给出你想要的结果。

答案 2 :(得分:1)

我想这应该足够了:

SELECT      s.subscriber_id,
            s.billing_id,
            s.TotalCount
FROM        (
                SELECT      subscriber_id,
                            billing_id,
                            COUNT(billing_id) AS TotalCount

                FROM        BILLING
                GROUP BY    subscriber_id,
                            billing_id
            ) s
GROUP BY    s.subscriber_id,
            s.TotalCount,
            s.billing_id

ORDER BY    s.subscriber_id

这应该给你如下结果:

subscriber_id   billing_id  TotalCount
1                   10a         2
1                   10b         2
1                   10c         1
2                   10a         1
2                   10b         1
2                   10c         3
2                   10d         1

你可以在这里看到 - > http://rextester.com/AVVS23801

希望这会有所帮助!!

答案 3 :(得分:-1)

select subscriber_id,count(billing_id)over(partition by subscriber_id)
from billing  

会做到这一点。