MySQL选择最高金额

时间:2017-04-09 15:54:02

标签: mysql

我正在尝试编写一个SELECT查询,该查询将显示下表中每个供应商的最低发票金额。尝试了一些解决方案,但无法理解它!有人可以帮忙吗?先感谢您。 enter image description here

4 个答案:

答案 0 :(得分:0)

对于supplier_name的最低invoice_price您可以使用聚合函数MIN和group by

wow64cpu!CpupSyscallStub+0x9

答案 1 :(得分:0)

将min聚合函数与group by子句一起使用

select supplier_name, min(invoice_price) from table_name group by supplier_name

与获得最高金额类似,使用最大聚合函数

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

答案 2 :(得分: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(),您可以通过使用其他联接来摆脱这种情况。

答案 3 :(得分:0)

答案很简单:

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