【问题标题】:How can I select the minimum price per item from my database?如何从我的数据库中选择每件商品的最低价格?
【发布时间】:2017-12-10 10:24:02
【问题描述】:

我想从我的 MySQL 数据库中选择每件商品的最低价格,但我不确定如何编写查询。

这是一个示例表。

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

在这种情况下,id 1 的价格/商品为 1 美元(200/200),id 2 为 100 美元(1000/10),id 3 为 5 美元(5/1),查询将返回 1 美元,因为它是最低价格/商品。

那么如何翻译成SQL呢?我想了想:

SELECT MIN(price)/200 WHERE quantity=200

但它只适用于硬编码的数量,我必须为每个 id 编写数量,并且不可能使用 1000 多种不同的价格和数量。所以我需要一些灵活的变量或其他东西,比如:

SELECT MIN(price)/quantity

但这不是正确的语法。 (或者它对我不起作用)

在MySQL中正确的写法是什么?

【问题讨论】:

  • 您的价格列显示的是美元?
  • min(price/quantity)?
  • @jarlh:这在语义上是不一样的。因为MIN(price) 可以选择与MIN(price/quantity) 不同的行
  • @WillemVanOnsem,我没有把你带到这里。 OP 想要最低价格/商品。

标签: mysql sql


【解决方案1】:

我认为这是你想要的:

select min(price / quantity)
from t;

如果您想要该行中的所有信息,请使用order bylimit

select t.*, (price / quantity) as unit_price
from t
order by unit_price asc
limit 1;

【讨论】:

    【解决方案2】:
    select min(Price/Quantity) from tbl
    

    tbl 是您拥有价格和数量数据的表格。这将起作用

    【讨论】:

      【解决方案3】:

      这是 Gordon Linoff 解决方案的便携式版本:

      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 AFAIK)。

      【讨论】:

        猜你喜欢
        • 2015-11-05
        • 2016-04-25
        • 2014-02-17
        • 2020-08-03
        • 1970-01-01
        • 2014-11-13
        • 2018-04-26
        • 1970-01-01
        • 2016-05-28
        相关资源
        最近更新 更多