I have a table of data like so :
- PK_table - merchantName - price - Product
- 1 - argos - 7 - 4
- 2 - comet - 3 - 4
- 1 - Dixon - 1 - 3
- 1 - argos - 10 - 4
I wish to select the minimum price for a product and the corresponding merchant in mysql.
I tried:
SELECT Product, merchantName, min(price)
FROM a_table
GROUP BY product
however the result returned is incorrect since it chooses the first merchant name and not the corresponding merchant of the MIN.
how do you do it?
To find the minimum value of a column, use the MIN() aggregate function; it takes as its argument the name of the column for which you want to find the minimum value. If you have not specified any other columns in the SELECT clause, the minimum will be calculated for all records in the table.
GROUP BY: This requires one (or multiple) column names based on which we want the results to be aggregated. [HAVING condition]: This is an optional condition that could be specified for SELECT queries that use the GROUP BY clause. It's similar to a WHERE clause in a normal SELECT query.
The MIN() function in MySQL is used to return the minimum value in a set of values from the table. It is an aggregate function that is useful when we need to find the smallest number, selecting the least expensive product, etc.
A SELECT statement clause that divides the query result into groups of rows, usually for the purpose of performing one or more aggregations on each group. The SELECT statement returns one row per group.
SELECT Merchant.Product, Merchant.Name, Merchant.Price
FROM a_table AS Merchant
JOIN
(
SELECT Product, MIN(Price) AS MinPrice
FROM a_table
GROUP BY Product
) AS Price
ON Merchant.Product = Price.Product
AND Merchant.Price = Price.MinPrice
Will return two rows if two merchants have the same low, low price.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With