2017-04-09 110 views
-1

我正試圖編寫一個SELECT查詢,它將顯示下表中每個供應商的最低發票金額。嘗試了幾個解決方案,但無法繞開它!誰能幫忙?先謝謝你。 enter image description hereMySQL選擇最高金額

回答

0

對於最低invoice_price通過supplier_name您可以通過

select supplier_name, min(invoce_price) 
from my_table 
group by supplier_name 
0

使用MIN聚合函數by子句

select supplier_name, min(invoice_price) from table_name group by supplier_name 
使用聚合函數MIN與組羣

同樣獲得最高金額,使用最大聚合功能

select supplier_name, max(invoice_price) from table_name group by supplier_name 
0

如果你想要發票號碼/日期這樣的列,你需要編寫2個查詢,我通常更願意爲這類任務寫一個tmp表。

DROP TEMPORARY TABLE IF EXISTS tmp_min_value; 
CREATE TEMPORARY TABLE tmp_min_value AS 
SELECT [key columns eg. supplier], min(invoice_price) as min_invoice_value 
FROM supplier_invocies 
GROUP BY [key columns eg. supplier]; 

SELECT is.* 
FROM supplier_invoices si 
INNER JOIN tmp_min_value tmv 
    ON si.supplier_name = tmv.supplier_name 
    AND si.invoice_price = tmv.min_invoice_value; 

如果有多個發票價格相同的發票,您可能會爲每個供應商獲得多個發票。如果您需要特定(例如,最後一個相關發票),或者只是對相關列進行分組並再次使用invoice_price上的MIN(),則可以通過使用另一個聯接來消除此問題。

0

的答案很簡單:

SELECT SUPPLIER_NAME, MIN(INVOICE_PRICE) 
FROM SUPPLIER_INVOICES 
GROUP BY SUPPLIER_NAME;