Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка всех последних unique строк в таблице / 6 сообщений из 6, страница 1 из 1
25.12.2019, 17:11
    #39907975
Vikonder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Камрады!
Есть общий вывод запроса, который выгдядит вот так:

Код: plaintext
1.
2.
3.
select TestName, cast([Total Time E2E] as decimal(10,1)), SLA , UnitsCount, TestsCount 
from [PerformanceResults].[dbo].[BenchmarkTestsSummary] where 
( OptimalVersion='7.4.2447.0' and TestEnvironment='QAPerformanceVertica' and runid='927') 
order by TestName

TestName........................................................E2E........SLA.....UnitsCount....TestsCount
ADI\Exact\ULD\300KU5000T\Scenario2...........35.5.......0............291664..........1218130818
ADI\Exact\ULD\300KU5000T\Scenario2...........65..........0............291664..........1218130818
ADI\Exact\ULD\300KU500T\Charts..................35.4......0.............314023..........165181595
ADI\Exact\ULD\300KU500T\Charts_BoxPlot......25.........0.............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Density......25.5.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Histogram..30.8.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Histogram..36.6.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_NP.............25.8.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Trend.........34.9.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Main.....................11..........0............291664..........151798520

Нужно, чтобы вывод не содержал DUPLICATE, а из всех дублированных строчек всегда выбирать последнюю

TestName........................................................E2E........SLA.....UnitsCount....TestsCount
ADI\Exact\ULD\300KU5000T\Scenario2...........65..........0............291664..........1218130818
ADI\Exact\ULD\300KU500T\Charts..................35.4......0.............314023..........165181595
ADI\Exact\ULD\300KU500T\Charts_BoxPlot......25.........0.............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Density......25.5.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Histogram..36.6.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_NP.............25.8.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Charts_Trend.........34.9.......0............291664..........151798520
ADI\Exact\ULD\300KU500T\Main.....................11..........0............291664..........151798520
...
Рейтинг: 0 / 0
25.12.2019, 17:48
    #39907997
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Vikonder,

Без критерия сортировки будет каша, но в физическом порядке можно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
WITH a(TestName, E2E, SLA, UnitsCount, TestsCount) AS (
    SELECT 'ADI\Exact\ULD\300KU5000T\Scenario2',  35.5, 0, 291664, 1218130818          UNION ALL 
    SELECT 'ADI\Exact\ULD\300KU5000T\Scenario2', 65,0,291664,1218130818		  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts',35.4,0,314023,165181595			  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_BoxPlot',25,0,291664,151798520		  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_Density',25.5,0,291664,151798520	          UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_Histogram',30.8,0, 291664, 151798520     UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_Histogram',36.6,0,291664,151798520	  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_NP',25.8,0,291664,151798520		  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Charts_Trend',34.9,0,291664,151798520		  UNION ALL
    SELECT 'ADI\Exact\ULD\300KU500T\Main',11,0,291664, 151798520),  
b AS (
    SELECT 
	   ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rn, 
	   TestName, E2E, SLA, UnitsCount, TestsCount 
    FROM a
), 
c AS ( 			  
    SELECT MAX(rn) AS rn FROM b
    GROUP BY TestName
)
SELECT TestName, E2E, SLA, UnitsCount, TestsCount FROM b 
INNER JOIN c ON c.rn = b.rn
...
Рейтинг: 0 / 0
25.12.2019, 18:13
    #39908002
dvk92
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Vikonder,




with t as (SELECT TestName,
E2E,
SLA,
UnitsCount,
TestsCount,
row_number() over(PARTITION BY TestName ORDER BY E2E) rw

FROM table),

t1 as (SELECT TestName,max(rw) m
FROM t)

SELECT TestName,
E2E,
SLA,
UnitsCount,
TestsCount

FROM t,t1
WHERE t.TestName=t1.TestName
...
Рейтинг: 0 / 0
26.12.2019, 16:22
    #39908540
Сруль.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Ка бы я сделал,
добавил бы поле Identity, чтобы знать, кто раньше,
кто позже.
Сделал бы вспомогательную, а может даже временную с # таблицу,
проверять надо.
Повесил бы на неё индекс юник с IGNORE_DUP_KEY
и загрузил бы тудой исходную таблицу, с сортировкой задом наперёд.
В этой вспомогательной будут записи, соответствующие вашим условиям.
...
Рейтинг: 0 / 0
02.01.2020, 16:36
    #39910440
Vikonder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Кому интересно, вот такая конструкция может быть применена...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from 
(
select TestName, cast([Total Time E2E] as decimal(10,1)) E2E, SLA , UnitsCount, TestsCount, StartTime,
          RANK() OVER (PARTITION BY TestName ORDER BY startTime desc) rnk 
from [PerformanceResults].[dbo].[BenchmarkTestsSummary] where 
( OptimalVersion='7.4.2447.0' and TestEnvironment='QAPerformanceVertica' and runid='927') 
) A
where A.rnk = 1
order by TestName
...
Рейтинг: 0 / 0
03.01.2020, 13:22
    #39910554
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка всех последних unique строк в таблице
Vikonder
Кому интересно, вот такая конструкция может быть применена...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from 
(
select TestName, cast([Total Time E2E] as decimal(10,1)) E2E, SLA , UnitsCount, TestsCount, StartTime,
          RANK() OVER (PARTITION BY TestName ORDER BY startTime desc) rnk 
from [PerformanceResults].[dbo].[BenchmarkTestsSummary] where 
( OptimalVersion='7.4.2447.0' and TestEnvironment='QAPerformanceVertica' and runid='927') 
) A
where A.rnk = 1
order by TestName




жесть: "конструкция применена" к выборке "последних"(????) "строк"
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка всех последних unique строк в таблице / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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