开发者

SQL Query using distinct

开发者 https://www.devze.com 2022-12-12 23:32 出处:网络
hello i have a table with the following structure: sku, category, brand, product_name, inventory_count

hello i have a table with the following structure:

sku, category, brand, product_name, inventory_count

with the following data:

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

I'm using the following SQL query

select distinct category from products

this would return the following:

car
truck
bike

this works great,

Now I want to get just one product example for each of the categories with the greatest INVENTORY_COUNT

so that it returns the data as:

car, "ford car 1"
truck, "ford truck 1"
bike, "ford bike 6"

wha开发者_开发知识库t SQL query would i run to get that data??

i want the item with the greater INVENTORY_COUNT for each category

thanks!!


SELECT category, MAX(product_name)
FROM table
GROUP BY
  category


Even you can try this (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

If u use x.rn = 2 the output is

category         product_name
bike             honda bike 5
car           honda car 1
truck           honda truck 1


Judging from the name inventory_count I assume that the value is not unique, so there could be more than one product in the category with the same count. Therefore you can't use the count as identifier in a join, so you need a subquery that limits the result to a single item.

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
0

精彩评论

暂无评论...
验证码 换一张
取 消