Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как добавить в выборку общее количество в группе?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Есть пример, делает то, что мне нужно, т.е. выборку первых N записей в группе.
Как добавить еще одно поле в выборку, которое будет содежрать в каждой записи - общее кол-во запсией в данной группе?

SET NOCOUNT ON

DECLARE @MyTable table
   (  RowID         int   IDENTITY, 
      Category      varchar(5),
      [ID]          varchar(5),
      [Description] varchar(25),
      Price         decimal(10,2)
   )
 
INSERT INTO @MyTable VALUES ( 'Pot', 'A1', 'Small Saucepan', 21.50 )
INSERT INTO @MyTable VALUES ( 'Pot', 'A2', '1 Qt Saucepan', 29.95 )
INSERT INTO @MyTable VALUES ( 'Pot', 'A3', '1.5 Qt Saucepan', 33.95 )
INSERT INTO @MyTable VALUES ( 'Pot', 'A4', 'Double Boiler', 39.50 )
INSERT INTO @MyTable VALUES ( 'Pot', 'A5', 'Stewpot', 49.50 )
INSERT INTO @MyTable VALUES ( 'Pot', 'A6', 'Pressure Cooker', 79.95 )
INSERT INTO @MyTable VALUES ( 'Pan', 'B1', '8"" Pie', 6.95 )
INSERT INTO @MyTable VALUES ( 'Pan', 'B2', '8"" Sq Cake', 7.50 )
INSERT INTO @MyTable VALUES ( 'Pan', 'B3', 'Bundt Cake', 12.50 )
INSERT INTO @MyTable VALUES ( 'Pan', 'B4', '9x12 Brownie', 7.95 )
INSERT INTO @MyTable VALUES ( 'Bowl', 'C1', 'Lg Mixing', 27.50 )
INSERT INTO @MyTable VALUES ( 'Bowl', 'C2', 'Sm Mixing', 17.50 )
INSERT INTO @MyTable VALUES ( 'Tools', 'T1', '14"" Spatula', 9.95 )

;WITH dt AS (
     SELECT
         ROW_NUMBER() OVER ( PARTITION BY Category ORDER BY Price DESC ) AS 'RowNumber',
         RowID,
         Category,
         [ID],
         [Description],
         Price
      FROM @MyTable
)
SELECT
   RowID,
   Category,
   [ID],
   [Description],
   Price
FROM dt
WHERE RowNumber <= 2
7 июн 13, 15:04    [14406706]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в выборку общее количество в группе?  [new]
iap
Member

Откуда: Москва
Сообщений: 47195
Winnipuh,
COUNT(*)OVER(PARTITION BY Category)
?
7 июн 13, 15:06    [14406727]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в выборку общее количество в группе?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
;WITH dt AS (
     SELECT
         ROW_NUMBER() OVER ( PARTITION BY Category ORDER BY Price DESC ) AS 'RowNumber',
         RowID,
         Category,
         [ID],
         [Description],
         Price,
         count(*) over( PARTITION BY Category ) cnt
      FROM @MyTable
)
SELECT
   RowID,
   Category,
   [ID],
   [Description],
   Price,
   cnt
FROM dt
WHERE RowNumber <= 2
7 июн 13, 15:09    [14406746]     Ответить | Цитировать Сообщить модератору
 Re: Как добавить в выборку общее количество в группе?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
спасибо, туплю...
7 июн 13, 15:10    [14406760]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить