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

Откуда:
Сообщений: 205
Добрый день.
В таблице есть поле Price, в котором находятся числа. Нужно на основе поля Price в той же таблице заполнить целочисленное поле Order по следующему принципу: туда помещается последовательный счётчик записей, который сбрасывается когда в поле Price встречается число меньше предыдущего. Счёт счётчика для первой записи и после сброса начинается с 1. Для примера:

Price Order
------------ -------------
10 1
9 1
11 2
8 1
9 2
11 3
12 4
7 1
13 2
15 3
16 4
21 5
18 1
20 2
Как это реализовать на SQL?
28 авг 19, 17:15    [21959290]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Degun,

STFF: start_of_group
28 авг 19, 17:18    [21959292]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Никак, потому что в вашей таблице нет поля, определяющего порядок записей.
28 авг 19, 17:18    [21959294]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Degun
Member

Откуда:
Сообщений: 205
Щукина Анна,
Подразумевалось, что используется Microsoft Transact SQL

Гавриленко Сергей Алексеевич,
Зачем? Используется только поле Price.
28 авг 19, 17:23    [21959299]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Degun,

Я вам что предлагаю?
28 авг 19, 17:26    [21959303]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Degun,

Затем, что порядок в Microsoft Transact SQL задается через order by, где надо написать поле, которое этот самый порядок определяет.
28 авг 19, 17:30    [21959307]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Гавриленко Сергей Алексеевич,
Зачем? Используется только поле Price.

А как вы планируете гарантировать детерминированность результата?
28 авг 19, 17:31    [21959308]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Degun
Member

Откуда:
Сообщений: 205
Хорошо. Вот такая таблица с заданием порядка записей по столбцу ID

ID Price Order
----- ------------ -------------
1 10 1
2 9 1
3 11 2
4 8 1
5 9 2
6 11 3
7 12 4
8 7 1
9 13 2
10 15 3
11 16 4
12 21 5
13 18 1
14 20 2
28 авг 19, 17:36    [21959310]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Еще раз, если первый вы не заметили :
STFF: start_of_group
28 авг 19, 17:42    [21959314]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Degun
Member

Откуда:
Сообщений: 205
Щукина Анна,
Если не трудно, можете код привести?
28 авг 19, 17:50    [21959321]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
Degun,

https://www.urbandictionary.com/define.php?term=STFF
28 авг 19, 18:04    [21959334]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Degun
Щукина Анна,
Если не трудно, можете код привести?

Только после исполнения пункта 6 Рекомендаций по оформлению сообщений в форуме
28 авг 19, 18:16    [21959340]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Degun
Member

Откуда:
Сообщений: 205
CREATE TABLE [dbo].[MyTable] (
	[ID] [int] NOT NULL,
	[Price] [float] NOT NULL,
	[Order] [int] NOT NULL 
) ON [PRIMARY]
GO
INSERT INTO MyTable (ID, Price, [Order]) VALUES (1,10,1)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (2,9,1)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (3,11,2)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (4,8,1)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (5,9,2)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (6,11,3)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (7,12,4)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (8,7,1)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (9,13,2)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (10,15,3)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (11,16,4)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (12,21,5)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (13,18,1)
INSERT INTO MyTable (ID, Price, [Order]) VALUES (14,20,2)
28 авг 19, 18:26    [21959349]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с счётчиком со сбросом  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Degun,

Решение
28 авг 19, 19:12    [21959371]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить