SQL子查询帮助(我相信使用agregate函数)

时间:2016-10-17 20:20:36

标签: mysql sql subquery

image

我正在为我的SQL查询课做作业,而且我被困在子查询上。我需要按仓库列出手头数量少于20件的物品数量。而且我只需要展示拥有多件物品且仓库少于20件的仓库。这就是我所拥有的:

select warehouse, on_hand, description
from part
where on_hand < 20 and 
(   select count(description)
    from part
    group by warehouse
)
order by warehouse;

我需要帮助的是子查询部分(如果我需要一个,子查询就是我所挣扎的)。我不一定想要一个直接的答案,但需要帮助,如提示和方向。

2 个答案:

答案 0 :(得分:0)

好吧,既然你不希望有人为你完成所有工作,而你想使用子查询,你可以尝试以下方法:

select col1, total_items 
from
(   select col1, 
    sum(col2) as total_items
    from part
    group by col1
) 
where total_items < 20 and total_items > 0
order by total_items;

请注意,您将子查询视为“表格”......

现在,使用HAVING子句:

select warehouse, count(description)
from part
where on_hand < 20
group by warehouse 
having count(description) > 1
order by warehouse;

您可以详细了解此条款here

答案 1 :(得分:0)

select warehouse, count(description)
from part
where on_hand < 20
group by warehouse 
having count(description) > 1
order by warehouse;

这有用吗?问题是&#34;按仓库列出手头数量少于20件的物品数量。仅显示那些手头有少于20个项目的仓库。&#34;并且此输出使仓库2具有20项以下的2项,仓库3具有20项以下的2项。当我手动检查

时,它看起来是正确的
select warehouse, count(description)
from part
where on_hand < 20