我有兩個表:發票和項。MySQL SUM通過虛擬子查詢字段(與另一個SUM)與GROUP BY
發票
id | timest
項
id | invoice_id | price | qty
很明顯的發票可以具有若干項 - items.invoice_id = invoices.id。
我有一個與他們的項目的總和選擇所有發票以下查詢:按週期
id| _period | total
-------------------
1 | 2014-06 | 100
4 | 2014-06 | 200
5 | 2014-07 | 660
6 | 2014-07 | 300
7 | 2014-07 | 30
9 | 2015-02 | 225
現在我想組吧:
SELECT id, DATE_FORMAT(FROM_UNIXTIME(inv.time), "%Y-%m") AS _period,
(SELECT SUM(it.price*it.quantity) FROM items AS it WHERE it.invoice_id=inv.id) as total
FROM `invoices` `inv`
這會產生什麼樣有輸出爲:
_period | qty | total_price
---------------------------
2014-06 | 2 | 300
2014-07 | 3 | 990
2015-02 | 1 | 224
我可以很容易地將它作爲數量字段作爲
SELECT DATE_FORMAT(FROM_UNIXTIME(inv.time), "%Y-%m") AS _period,
COUNT(inv.id) as qty
FROM `invoices` `inv`
GROUP BY _period
但我無法弄清楚如何在類似的事情可能對TOTAL_PRICE領域,這從一個子查詢的虛擬域結果做什麼?有人有什麼主意嗎?
謝謝!
SELECT DATE_FORMAT(FROM_UNIXTIME(i.time, '%Y-%m') AS _period,
COUNT(DISTINCT i.id) as num_invoices
SUM(i.price * it.quantity) as total
FROM invoices i LEFT JOIN
items it
ON it.invoice_id = i.id
GROUP BY _period
ORDER BY _period;
謝謝你很多!這完全解決了! –