Mysql 计算每行中具有相同日期的行数
因此,我有两张表,如下所示: -一个订阅可以有多个帐单 -一个账单可以有一个订阅 请参见选项卡的示例图片: 现在我的第一个目标是根据创建日期和计费日期重新组合计费数量,因此我使用以下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
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)
。看起来就像我在这里需要的一样!尝试一下并验证这是否有效