SQL-запрос с использованием различных - PullRequest
0 голосов
/ 29 ноября 2009

привет, у меня есть таблица со следующей структурой:

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 для каждой категории

спасибо !!

Ответы [ 3 ]

4 голосов
/ 29 ноября 2009
SELECT category, MAX(product_name)
FROM table
GROUP BY
  category
1 голос
/ 29 ноября 2009

Судя по названию 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
1 голос
/ 29 ноября 2009

Даже вы можете попробовать это (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...