TOP我有两个表:替代SQL ANSI与TIES
产品
- id_product
- 描述
- 价格
- id_category
类
- id_category
- 描述
我想知道,有更多的产品类别。例如,类别食品也有10种产品和电子产品。他们是一样的。
现在我正在使用SQL Server,并使用TOP WITH TIES。
SELECT TOP 1 WITH TIES p.id_category, COUNT(*) as amount FROM product p
JOIN category c ON p.id_category = c.id_category
GROUP BY p.id_category
ORDER BY amount
是否有另一种方法来解决这一问题,并获得良好的性能? 我也试着用DENSE_RANK的位置= 1。 它也有效。
SELECT * FROM (
SELECT p.id_category, COUNT(*) as amount, DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) position FROM product p
JOIN category c ON p.id_category = c.id_category
GROUP BY p.id_category
) rnk
WHERE rnk.position = 1
但我想在SQL ANSI这个解决方案。
我尝试使用MAX(COUNT(*)),但它不起作用。
是否有一个通用的解决方案?这种解决方案比使用TOP WITH TIES更好吗?
当你使用MAX(COUNT(*))'时,你是否尝试在'HAVING'中使用它? – Alan
稠密等级_is_是ANSI SQL标准的一部分,只有在使用MySQL或少数其他数据库时才可用。依靠密集排名的问题是什么? –
我尝试使用SUBSELECT ON必须获得最大值。但是我应该重复一下这些代码吗 – OnScreen