鑑於一個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