如果我有水果表:sql server查詢 - 正在寫多個查詢的唯一方法?
FruitId ColorId NumofPurchased
。
我想爲每個colorId返回一行,其中NumOfPurchased是該colorId的最大值。我想通過循環訪問colorId或者手動爲10種顏色寫10個查詢......我不知道,有沒有更好/更優化的方法來做到這一點?
我正在使用SQL Server 2008 express。
如果我有水果表:sql server查詢 - 正在寫多個查詢的唯一方法?
FruitId ColorId NumofPurchased
。
我想爲每個colorId返回一行,其中NumOfPurchased是該colorId的最大值。我想通過循環訪問colorId或者手動爲10種顏色寫10個查詢......我不知道,有沒有更好/更優化的方法來做到這一點?
我正在使用SQL Server 2008 express。
不確定這是否正是您想要的(無論是所有水果的每種顏色的最大值,還是每種水果的每種顏色的最大值) - 但您可以根據需要更改/添加PARTITION BY
子句的值。
;with fruitCTE
AS
(
SELECT FruitId, ColorId, NumofPurchased,
ROW_NUMBER() OVER (PARTITION BY ColorId,
ORDER BY NumofPurchased DESC
) AS rn
FROM fruit
)
SELECT FruitId, ColorId, NumofPurchased,
FROM fruitCTE
WHERE rn = 1;
SELECT MAX(NumOfPurchased), ColorId, FruitId
FROM fruit
GROUP BY ColorId, FruitId
這應該做的伎倆。
我在select子句中也需要fruitid,這會破壞代碼,因爲它不在group by子句或任何東西中。 – TPR 2010-10-17 06:16:05
編輯我的答案包括此專欄。 – jwiscarson 2010-10-17 06:22:47
然後它會列出結果中的所有水果(我剛剛檢查過)!我想選擇每種顏色最多購買數量的水果。 – TPR 2010-10-17 06:37:56