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

Код: 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
Выборка всех последних unique строк в таблице
    #39907997
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Выборка всех последних unique строк в таблице
    #39908002
dvk92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Выборка всех последних unique строк в таблице
    #39908540
Сруль.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ка бы я сделал,
добавил бы поле Identity, чтобы знать, кто раньше,
кто позже.
Сделал бы вспомогательную, а может даже временную с # таблицу,
проверять надо.
Повесил бы на неё индекс юник с IGNORE_DUP_KEY
и загрузил бы тудой исходную таблицу, с сортировкой задом наперёд.
В этой вспомогательной будут записи, соответствующие вашим условиям.
...
Рейтинг: 0 / 0
Выборка всех последних unique строк в таблице
    #39910440
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
Выборка всех последних unique строк в таблице
    #39910554
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка всех последних unique строк в таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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