我有如下表格:
产品
-productId (primarykey)
-productCategory (foreignkey)
productCategories
-productCategoryId (pk)
-productCategoryName
soldProducts
-soldProductId (pk)
-productId (fk)
我试图查询哪个类别的产品销售比其他产品更多。
在soldProducts表中,例如,如果“soldProducts”上的“x”产品四次,则表示“x”产品已售出4次。
根据这些,我该如何进行此查询?
答案 0 :(得分:0)
如果您想要一个销售额最高的单个类别,那么这基本上是join
和group by
:
select p.productCategory, count(*)
from soldProducts sp join
products p
on sp.productId = p.productId
group by p.productCategory
order by count(*) desc
fetch first 1 row only;
这回答了这个问题(正如我所解释的那样),但它留下了一些问题:
join
返回。我还注意到数据模型非常有限,没有关于购买者,供应商,销售日期,销售量或退货的信息。其中一些可能会影响结果。
答案 1 :(得分:0)
加入你的桌子:
SELECT pc.productCategoryName, COUNT(*) AS Sales
FROM solProducts sp
INNER JOIN products p ON sp.productid = p.productid
INNER JOIN productCategory pc ON p.productCategoryID = pc.productCategoryID
GROUP BY pc.productCategoryName
ORDER BY Sales DESC
我假设产品中的产品类别外键实际上是映射到产品类别表的ID。