powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MAX значение INT из списка, относительно текущего значения
11 сообщений из 11, страница 1 из 1
MAX значение INT из списка, относительно текущего значения
    #39924780
Vikonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Камрады!

Дано:
- Таблица, в которой значение runId обновляется на 1 каждый день, если запускается scheduler
- Если scheduler не запускается, то значение не изменяется, а на следующий день runId + 2 и т.д.
т.е. если scheduler не запускаляся 5 дней, при следующем запуске runId = previousRUNID + 5
- каждый раз запускаются одни и те же тесты (TestName)

id . runid.....datetime......Version.................Test................
---|--------|----------------|---------------|-----------------------------|
1 | 840 | 04/23/2019 |7.4.1841.0 | Semi\SingleULD\Test1 |
2 | 839 | 04/22/2019 |7.4.1841.0 | Semi\SingleULD\Test1 |
5 | 838 | 04/21/2019 |7.4.1840.0 | Semi\SingleULD\Test1 |
3 | 837 | 04/19/2019 |7.4.1839.0 | Semi\SingleULD\Test1 |
4 | 836 | 04/18/2019 |7.4.1836.0 | Semi\SingleULD\Test1 |
6 | 835 | 04/17/2019 |7.4.1836.0 | Semi\SingleULD\Test1 |
7 | 830 | 04/12/2019 |7.4.1836.0 | Semi\SingleULD\Test1 |
8 | 829 | 04/11/2019 |7.4.1835.0 | Semi\SingleULD\Test1 |


Задача:
- при каждом следующем запуске, вытаскивать предыдущий runId

Текущая конструкция: - не имеет правильной связи с последним значение runId
from SQL runid = (previousRunid - 1) - неправильная, так как не всегда предыдущее значение меньше на 1

Код: sql
1.
2.
3.
4.
string previousResults = "select * from ( select TestName, cast([Total Time E2E] as decimal(10, 1)) E2E , SLA , UnitsCount, TestsCount, " + 
"RANK() OVER(PARTITION BY TestName ORDER BY startTime desc) rnk from [dbo].[BenchmarkTestsSummary] 
where ( OptimalVersion='" +  currentBuild + "' and TestEnvironment='" + Environment + "' and runid='" + (previousRunid - 1) + "')" +
 ") Index_Test where Index_Test.rnk = 1 order by TestName";



Нужно: выбирать MAX runId их всего предыдущего списка
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924813
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
string previousResults = "select * from ( select top 1 TestName, cast([Total Time E2E] as decimal(10, 1)) E2E , SLA , UnitsCount, TestsCount, " + 
"RANK() OVER(PARTITION BY TestName ORDER BY startTime desc) rnk from [dbo].[BenchmarkTestsSummary] 
where ( OptimalVersion='" +  currentBuild + "' and TestEnvironment='" + Environment + "' and runid<" + previousRunid + ") order by runid desc" +
 ") Index_Test where Index_Test.rnk = 1 order by TestName";



пс
Я ж думаю что runid у тебя числовое поле, так ?
А кавычками ты его "окружаешь" просто по "доброте душевной", правильно ?

вот это имеется в виду авторrunid='" + (previousRunid - 1) + "'
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924816
Vikonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, вот такая вот конструкция будет работать....???

SELECT MAX(runid) from [dbo].[BenchmarkTestsSummary]
WHERE runid < previousrunID
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924822
Vikonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court
Код: sql
1.
2.
3.
4.
string previousResults = "select * from ( select top 1 TestName, cast([Total Time E2E] as decimal(10, 1)) E2E , SLA , UnitsCount, TestsCount, " + 
"RANK() OVER(PARTITION BY TestName ORDER BY startTime desc) rnk from [dbo].[BenchmarkTestsSummary] 
where ( OptimalVersion='" +  currentBuild + "' and TestEnvironment='" + Environment + "' and runid<" + previousRunid + ") order by runid desc" +
 ") Index_Test where Index_Test.rnk = 1 order by TestName";




не будет выбираться MAX
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924842
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vikonder,

что-то вы намутили... Создайте закольцованную последовательность от одного до пять и при старте теста берите очередное значение.
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924845
Vikonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Vikonder,

что-то вы намутили... Создайте закольцованную последовательность от одного до пять и при старте теста берите очередное значение.


И как это поможет выбирать предыдущее значение?
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924855
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vikonder,

Вам не надо знать предыдущее, об этом последовательность позаботится. 1.2.3.4.5.1.2.3.4.5 Когда бы ни запустили - получите номер теста, следующий по порядку относительно последнего выполненного.
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39924860
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас задача какая - перебирать тесты по очереди?
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39925172
Vikonder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
У вас задача какая - перебирать тесты по очереди?


Для каждого Набора тестов иметь результат текущего (для runid) и предыдущего (для previuosRunId) запуска.
При условии, что previuosRunId != runid - 1 (в общем случае)
Как частный случай, если всё работает каждый день previuosRunId = runid - 1
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39925220
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vikonder

Для каждого Набора тестов иметь результат текущего (для runid) и предыдущего (для previuosRunId) запуска .
При условии, что previuosRunId != runid - 1 (в общем случае)
Как частный случай, если всё работает каждый день previuosRunId = runid - 1


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
-- Тестовые данныe 
WITH a (id, runid, [datetime], [Version], Test, result ) AS ( 
    SELECT 1 , 840 , '04/23/2019', '7.4.1841.0', 'Semi\SingleULD\Test1', 'SUCCESS' UNION ALL
    SELECT 2 , 839 , '04/22/2019', '7.4.1841.0', 'Semi\SingleULD\Test1', 'FAIL'    UNION ALL
    SELECT 5 , 838 , '04/21/2019', '7.4.1840.0', 'Semi\SingleULD\Test1', 'SUCCESS' UNION ALL
    SELECT 3 , 837 , '04/19/2019', '7.4.1839.0', 'Semi\SingleULD\Test1', 'FAIL'	   UNION ALL
    SELECT 4 , 836 , '04/18/2019', '7.4.1836.0', 'Semi\SingleULD\Test1', 'SUCCESS' UNION ALL
    SELECT 6 , 835 , '04/17/2019', '7.4.1836.0', 'Semi\SingleULD\Test1', 'FAIL'    UNION ALL
    SELECT 7 , 830 , '04/12/2019', '7.4.1836.0', 'Semi\SingleULD\Test1', 'SUCCESS' UNION ALL
    SELECT 8 , 829 , '04/11/2019', '7.4.1835.0', 'Semi\SingleULD\Test1', 'FAIL'     UNION ALL
    SELECT 9 , 8401 , '12/23/2020', '7.4.1841.0', 'Semi\SingleULD\Test2' , 'SUCCESS' UNION ALL
    SELECT 10 , 8391 , '12/22/2020', '7.4.1841.0', 'Semi\SingleULD\Test2', 'FAIL'    UNION ALL
    SELECT 11 , 8381 , '12/21/2020', '7.4.1840.0', 'Semi\SingleULD\Test2', 'SUCCESS' UNION ALL
    SELECT 12 , 8371 , '12/19/2020', '7.4.1839.0', 'Semi\SingleULD\Test2', 'FAIL'	   UNION ALL
    SELECT 13 , 8361 , '12/18/2020', '7.4.1836.0', 'Semi\SingleULD\Test2', 'SUCCESS' UNION ALL
    SELECT 14 , 8351 , '12/17/2020', '7.4.1836.0', 'Semi\SingleULD\Test2', 'FAIL'    UNION ALL
    SELECT 15 , 8301 , '04/12/2019', '7.4.1836.0', 'Semi\SingleULD\Test2', 'SUCCESS' UNION ALL
    SELECT 16 , 8291 , '04/11/2019', '7.4.1835.0', 'Semi\SingleULD\Test2', 'FAIL'    
), 
-- Решение
b AS (
SELECT 
       a.id
     , a.runid
     , a.[datetime]
     , a.[Version]
     , a.Test
	, a.result
     , LAG(a.result, 1, a.result) OVER(PARTITION BY a.[Test] ORDER BY a.runid) AS [Предыдущий result]
     , ROW_NUMBER() OVER(PARTITION BY a.[Test] ORDER BY a.runid DESC) AS rn
FROM 
     a) 
SELECT 
       b.id
     , b.runid
     , b.[datetime]
     , b.[Version]
     , b.Test
	, b.result
     , b.[Предыдущий result]
FROM b 
    WHERE b.rn = 1
...
Рейтинг: 0 / 0
MAX значение INT из списка, относительно текущего значения
    #39925226
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vikonder,

Если предыдущий номер получить, то

Код: sql
1.
select top (1) lead(runid) over (order by runid desc) id from [dbo].[BenchmarkTestsSummary]
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MAX значение INT из списка, относительно текущего значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]