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