Mysql 计算每行中具有相同日期的行数

Mysql 计算每行中具有相同日期的行数,mysql,sql,Mysql,Sql,因此,我有两张表,如下所示: -一个订阅可以有多个帐单 -一个账单可以有一个订阅 请参见选项卡的示例图片: 现在我的第一个目标是根据创建日期和计费日期重新组合计费数量,因此我使用以下mysql请求: SELECT creation_date,billing_date,count(billing_id) FROM subscription,billing WHERE subscription.subscription_id = billing.subscription_id GROUP B

因此,我有两张表,如下所示:

-一个订阅可以有多个帐单

-一个账单可以有一个订阅

请参见选项卡的示例图片:

现在我的第一个目标是根据创建日期和计费日期重新组合计费数量,因此我使用以下mysql请求:

SELECT creation_date,billing_date,count(billing_id) 
FROM subscription,billing 
WHERE subscription.subscription_id = billing.subscription_id 
GROUP BY billing_date,creation_date
要获得此结果,请执行以下操作:

我的目标是得到这样的结果:

换句话说,我想为mysql请求的每一行提供与请求“creation_date”字段中的订阅共享相同创建的订阅数。 我尽我最大的努力做到尽可能明确,我知道这有点棘手,所以希望我说得足够清楚

请注意,在我的示例中,每个订阅每天都会收到一份账单,这并不是基于什么(我不能使用“账单数量字段”作为我的答案)

Mysql版本是5.6.44

那么连接呢

SELECT a.number_of_billings, a.creation_date, a.billing_date, 
       COALESCE(b.number_of_subs, 0) AS number_of_subs
FROM (SELECT creation_date,billing_date,COUNT(billing_id) AS number_of_billings
      FROM subscription,billing 
      WHERE subscription.subscription_id = billing.subscription_id 
      GROUP BY billing_date,creation_date) AS a
LEFT JOIN
(SELECT creation_date, COUNT(subscription_id) AS number_of_subs
 FROM subscription
 GROUP BY creation_date) AS b
ON a.creation_date = b.creation_date

您需要加入,因为有两个单独的分组条件。您希望按创建日期和计费日期的不同组合计算计费ID,但只希望按计费日期计算订阅数。

只需复制
count()
。您复制了该列。如前所述,计费数量不是基于,在我的示例中,我为每个订阅添加了每日计费,但与实际情况不同environement@AndRowID:您应该提供能够真正代表您所描述的用例的示例数据。可以是这样的!只是一个例子巧合的是,这些列具有相同的值,而不是用作规则的内容可能只是您现在拥有的查询中的
count(distinct billing\u id)、count(distinct subscription\u id)
。看起来就像我在这里需要的一样!尝试一下并验证这是否有效