鉴于一个payments
表,其中包括payer_id
和recipient_id
MySQL组数由2列组成?
而计算收到的款项为:
select COUNT(*) as payer_count, recipient_id
FROM payments
GROUP BY recipient_id
ORDER BY payer_count DESC
如何计算:,用户是支付的数目(用户可以是payer_id或recipient_id)?
鉴于一个payments
表,其中包括payer_id
和recipient_id
MySQL组数由2列组成?
而计算收到的款项为:
select COUNT(*) as payer_count, recipient_id
FROM payments
GROUP BY recipient_id
ORDER BY payer_count DESC
如何计算:,用户是支付的数目(用户可以是payer_id或recipient_id)?
如果假设你要计算 - 每个人有一个特定的ID - 此人参与的付款交易次数,那么工会应该全力帮助:
select person_id, count(*)
from ((select payer_id as person_id from payments) union all (select recipient_id as person_id from payments)) paymentsOfPerson
group by person_id
order by person_id DESC
如果支付还可以包含的记录payer_id = recipient_id(从一个账户转移到同一个人的另一个帐户),然后一个人在那里照顾这类转让不计算两次:
select person_id, count(*)
from ((select payer_id as person_id from payments where payer_id != recepient_id) union all (select recipient_id as person_id from payments)) paymentsOfPerson
group by person_id
order by person_id DESC
! '联合'ftw –
一种方法是UNION ALL
聚合前:
select id, count(*) as cnt, sum(recipient) as recipient_cnt,
sum(payer) as payer_cnt
from ((select recipient_id as id, 1 as recipient, 0 as payer
from payments
) union all
(select payer_id, 0, 1
from payments
)
) i
group by id;
我认为这可以解决你的问题:
SELECT COUNT(*) as payments_count
, COUNT(DISTINCT payer_id) distinct_payers
, recipient_id
FROM payments
GROUP BY recipient_id
ORDER BY payer_count DESC
请解释你的要求用简单的英语。 'count(payer_id或recipient_id)'是无意义的语法。 – shmosel
您会得到一个固定ID,并且想要计算它显示的付款行数?第一个是 – maraca