如何进行此查询:"查找哪种类型的销量高于其他类型?



我有如下表格:

产品

-productId (primarykey)
-productCategory (foreignkey)

产品分类

-productCategoryId (pk)
-productCategoryName

已售出产品

-soldProductId (pk)
-productId (fk)

我正在尝试查询哪个类别的产品比其他产品卖得更多。

例如,在已售产品表中,如果"已售产品"上的"x"产品四次,则表示"x"产品售出 4 次。

根据这些,我该如何进行此查询?

如果你想要一个销量最高的单一类别,那么这基本上是一个joingroup 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回去。

我还注意到,数据模型非常有限,没有关于购买者、供应商、销售日期、销售金额或退货的信息。 其中一些可能会影响结果。

只需加入您的表:

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。

最新更新