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

Дано:
- Таблица, в которой значение 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
10.02.2020, 18:02
    #39924813
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
Код: 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
10.02.2020, 18:03
    #39924816
Vikonder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
Народ, вот такая вот конструкция будет работать....???

SELECT MAX(runid) from [dbo].[BenchmarkTestsSummary]
WHERE runid < previousrunID
...
Рейтинг: 0 / 0
10.02.2020, 18:07
    #39924822
Vikonder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
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
10.02.2020, 18:28
    #39924842
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
Vikonder,

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

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


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

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


Для каждого Набора тестов иметь результат текущего (для runid) и предыдущего (для previuosRunId) запуска.
При условии, что previuosRunId != runid - 1 (в общем случае)
Как частный случай, если всё работает каждый день previuosRunId = runid - 1
...
Рейтинг: 0 / 0
11.02.2020, 14:46
    #39925220
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
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
11.02.2020, 14:51
    #39925226
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MAX значение INT из списка, относительно текущего значения
Vikonder,

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

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


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