2017-04-09 109 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;