2017-07-06 14 views
2

MySQLデータベースから1アイテムあたりの最低価格を選択したいのですが、クエリの書き方がわかりません。データベースからアイテムごとに最低価格を選択するにはどうすればよいですか?

次の表の例です。この場合

id | price | quantity 
    1| $200 |  200 
    2| $1000 |  10 
    3|  $5 |  1 

価格/ ID 1のための項目は、それが$ 5の(5/1)のID 3のために、それは$ 100(1000から1010)をのID 2 $ 1(200/200)、および照会であろう最低価格/商品であるため、$ 1が返されます。

どのようにしてSQLに変換できますか?

SELECT MIN(price)/200 WHERE quantity=200 

それだけでハードコードされた量で動作し、私は、各IDの量を記述する必要がありますし、1000個の+の異なる価格と数量では不可能であろう:私は考えました。ですから、私は変数や何かを柔軟にする必要があります:

SELECT MIN(price)/quantity 

しかし、それは正しい構文ではありません。 (またはそれは私のために働いていません)

MySQLでそれを書く正しい方法は何ですか?

+0

あなたの価格列はドルを表示していますか? –

+1

'分(価格/数量)'? – jarlh

+0

@jarlh:それは意味的に同じではありません。 'MIN(price)'は 'MIN(price/quantity) '以外の行を選択することができるので、私はここにはいません。 –

答えて

4

私はこれは何をしたいんだと思う:

select min(price/quantity) 
from t; 

あなたが行のすべての情報が必要な場合は、その後、order bylimit使用:

select t.*, (price/quantity) as unit_price 
from t 
order by unit_price asc 
limit 1; 
0
SELECT MIN(price/quantity) 
FROM t; 
0
select min(Price/Quantity) from tbl 

TBLがありますあなたが価格と数量のデータを持っているテーブル。これは、ここで

0

に動作しますゴードン・リノフのソリューションのポータブル版です:

SELECT t.*, (price/quantity) as unit_price 
FROM t t1 
WHERE NOT EXISTS (SELECT * FROM t t2 WHERE t2.price/t2.quantity < t1.price/t1.quantity); 

ポイントはLIMITはいくつかの製品(MySQLとPostgreSQLの私の知る限り)に特異的であることです。

関連する問題