你好,我有一个具有以下结构的表:
sku, category, brand, product_name, inventory_count
包含以下数据:
1001, car, honda, "honda car 1", 5
1002, truck, honda, "honda truck 1", 6
1003, car, ford, "ford car 1", 7
1004, truck, ford, "ford truck 1", 8
1005, bike, honda, "honda bike 5", 9
1006, bike, ford, "ford bike 6", 10
我正在使用以下SQL查询
select distinct category from products
这将返回以下内容:
car
truck
bike
这很有效,
现在我想为每个具有最大INVENTORY_COUNT的类别提供一个产品示例
以便将数据返回为:
car, "ford car 1"
truck, "ford truck 1"
bike, "ford bike 6"
我将运行什么SQL查询来获取该数据?
我希望每个类别的商品具有更大的INVENTORY_COUNT
谢谢!
答案 0 :(得分:4)
SELECT category, MAX(product_name)
FROM table
GROUP BY
category
答案 1 :(得分:1)
即使你可以尝试这个(Sql Server 2005 +)
select x.category,x.product_name from(
select ROW_NUMBER() over(partition by category order by product_name) rn,
t.* from @t t) x
where x.rn = 1
**category product_name**
bike ford bike 6
car ford car 1
truck ford truck 1
如果您使用x.rn = 2,则输出为
category product_name
bike honda bike 5
car honda car 1
truck honda truck 1
答案 2 :(得分:1)
从名称inventory_count
判断我假设该值不是唯一的,因此该类别中可能有多个具有相同计数的产品。因此,您不能将计数用作连接中的标识符,因此您需要一个子查询将结果限制为单个项目。
select
p.category,
product_name = (
select top 1 n.product_name
from products n
where n.category = p.category
order by n.inventory_count desc
)
from products p
group by p.category