我有一张桌子-> Saledetail(prodid,Quantity)。我想从该表中获取数量最少的prodid。
经过一些资源后,例如:SQL query to select distinct row with minimum value
我写了一个查询'''
select prodid, sum(quantity) as sum
from saledetail
group by prodid
'''
它的输出是**
PRODID K
102 11
101 5
104 4
106 4
103 2
**
现在为了获得具有k最小值的prodid,我将不得不使用select min(k) from table_name
。但是我没有该查询的table_name,因为它是一个子查询。我也尝试给它们起别名,然后出现错误,无法弄清楚。所以,我想知道如何完成我的要求?如果有更好的解决方案,也欢迎您。谢谢
此查询为您提供数量最少的产品:
select prodid, sum(quantity) as sum_quantity
from saledetail
group by prodid
order by sum(quantity)
limit 1;
但是,LIMIT
没有tie子句。因此,如果两个或多个产品共享相同的最小总数,则上述查询将任意选择其中一个。
这是获取所有这些产品的简单查询:
select prodid, sum(quantity) as sum_quantity
from saledetail
group by prodid
having sum(quantity) =
(
select sum(quantity)
from saledetail
group by prodid
order by sum(quantity)
limit 1
);
从MySQL 8开始,您可以使用窗口函数以便只读取一次表:
select prodid, sum_quantity
from
(
select
prodid,
sum(quantity) as sum_quantity
min(sum(quantity)) over () as min_sum_quantity
from saledetail
group by prodid
) aggregated
where sum_quantity = min_sum_quantity;