我試圖建立MySQL查詢與多個連接蒙山加盟值的總和。有3個表格:custmer,帳戶和存款。帳戶和存款將通過其customer_id字段加入到客戶中。在查詢結束時,所有的客戶都被他們GROUP_ID分組:MySQL查詢:和列值具有鮮明的另一列
SELECT customer.*,
COUNT(DISTINCT account.id) as account_count,
SUM(deposit.amount)/(COUNT(deposit.id)/COUNT(DISTINCT deposit.id)) as deposit_sum,
SUM(???) as deposit_first_sum
FROM customer
LEFT JOIN account ON account.customer_id = customer.id
LEFT JOIN deposit ON deposit.customer_id = customer.id
GROUP BY customer.group_id
的問題是:加入了行被複制,而我不得不做出一些分析:SUMM所有存款金額 - 你可以在這裏看到我的解決辦法爲deposit_sum。但真正的問題是總結「客戶的首次存款」。分組結果之前,我們可能會看到有這樣的:
... deposit.id deposit.customer_id deposit.amount
... 1 1 10
... 2 1 20
... 3 2 15
... 4 2 30
所以我需要的是總結僅第一量爲每CUSTOMER_ID(10 + 15),這將是「deposit_first_sum」。這裏
一個限制是我很害怕,因爲它需要大量的內存,同時從存款表讓所有存款行,我不能用「左連接(SELECT ... FROM存款)作爲定金」。
我在這裏看到了一個有趣的答案Sum values from one column if Index column is distinct? 但它適用於MSSQL。
所以,問題是:有沒有辦法來概括所有的第一存款,而無需使用JOIN(SELECT)或可能存在與JOIN(SELECT)的方式,但有些記憶經濟把戲?
UPDATE。 我們也可能使用與帳戶表相關的deposit.account_id。
可以發佈當前查詢的結果集? – Avidos
...存款記錄customer_id而不是account_id? –
並且用戶會擁有多個帳戶? –