powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сложный запрос
10 сообщений из 10, страница 1 из 1
сложный запрос
    #39992952
jenja82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужна помощь. в моей таблице 650000 строк и 4 столбца: f1, f2, f3, files
бьюсь над задачей- как вывести все строки:
где совпадают значения в столбце f2,
начинаются с одинакового символа в столбце f3 (числа),
и разные по значениям в столбце files.
перепробовал много вариантов, не идет
...
Рейтинг: 0 / 0
сложный запрос
    #39992958
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполните пункт 4 и пункт 6 из рекомендаций .
...
Рейтинг: 0 / 0
сложный запрос
    #39992994
jenja82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OK/
версия ПО Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86)
Feb 10 2012 19:13:17
Copyright (c) Microsoft Corporation
Express Edition on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (WOW64)
через Database Engine .

Результат нужен в таком виде:
f2 f3 files
284560451 431 1401
284560451 451 1200
178851380 130 1401
178851380 130 2550
193641606 101 1401
193641606 180 201
...
Рейтинг: 0 / 0
сложный запрос
    #39992995
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenja82
OK/
версия ПО Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86)
Feb 10 2012 19:13:17
Copyright (c) Microsoft Corporation
Express Edition on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (WOW64)
через Database Engine .

Результат нужен в таком виде:
f2 f3 files
284560451 431 1401
284560451 451 1200
178851380 130 1401
178851380 130 2550
193641606 101 1401
193641606 180 201
Из какого "вида"?
...
Рейтинг: 0 / 0
сложный запрос
    #39993051
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--1. Нужен уникальный идентификатор строки id

--2. дальше так и пишешь

with t as ( select * from [моей таблице 650000 строк] )

 select * from t
   where exists( select * from t as t1 where t1.f2 = t.f2 and t1.id <> t.id ) -- где совпадают значения в столбце f2,
     and exists( select * from t as t1 where left(t1.f3, 1) = left(t.f3, 1) and t1.f3 > '' and try_cast(t1.f3 as float) is not null and try_cast(t.f3 as float) is not null and t1.id <> t.id ) -- начинаются с одинакового символа в столбце f3 (числа)
	 and not exists( select * from t as t1 where t1.files = t.files and t1.id <> t.id ) -- и разные по значениям в столбце files
   order by f2, left(f3, 1)
...
Рейтинг: 0 / 0
сложный запрос
    #39993073
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
declare @t table (f2 int, f3 int, files int);

insert into @t
 (f2, f3, files)
values
 (200000000, 531, 1401);

insert into @t
 (f2, f3, files)
values
 (284560451, 431, 1401),
 (284560451, 451, 1200),
 (178851380, 130, 1401),
 (178851380, 130, 2550),
 (193641606, 101, 1401),
 (193641606, 180, 201);

insert into @t
 (f2, f3, files)
 select f2, f3, files from @t;

select * from @t;

with t as
(
 select
  f2, f3, files,
  row_number() over (partition by f2, left(cast(f3 as varchar(10)), 1), files order by 1/0) as rn,
  count(*) over (partition by f2, left(cast(f3 as varchar(10)), 1), files) as c
 from
  @t
)
select
 f2, f3, files
from
 t
where
 c > 1 and rn = 1;
...
Рейтинг: 0 / 0
сложный запрос
    #39993429
jenja82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за старания, ребята.
код от Алекса выводит пустой результат.
код от invm выводит 275 результатов, но не то.
будем думать дальше.
...
Рейтинг: 0 / 0
сложный запрос
    #39993495
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenja82,
чутка код invm поправил
Код: 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.
declare @t table (f2 int, f3 int, files int);

insert into @t
 (f2, f3, files)
values
 (200000000, 531, 1401);

insert into @t
 (f2, f3, files)
values
 (284560451, 431, 1401),
 (284560451, 451, 1200),
 (178851380, 130, 1401),
 (178851380, 130, 2550),
 (193641606, 101, 1401),
 (193641606, 180, 201);

insert into @t
 (f2, f3, files)
 select f2, f3, files from @t;

select * from @t order by f2, f3, files;

with t as
(
	select f2, left(cast(f3 as varchar(10)), 1) f3 from @t group by  f2, left(cast(f3 as varchar(10)), 1) having count(files) > 1
)
select top (1) With ties
 t1.f2, t1.f3, t1.files
from
 @t t1
join t On t.f2 = t1.f2 and t.f3 = left(cast(t1.f3 as varchar(10)), 1)
order by 
	row_number() over (partition by t1.f2, left(cast(t1.f3 as varchar(10)), 1), t1.files order by 1/0)
...
Рейтинг: 0 / 0
сложный запрос
    #39993528
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenja82
Спасибо за старания, ребята.
код от Алекса выводит пустой результат.
код от invm выводит 275 результатов, но не то.
будем думать дальше.


Чтобы понять ОТВЕТ надо:
а) правильно задать вопрос.
б) знать ответ на 99.9%.
...
Рейтинг: 0 / 0
сложный запрос
    #39993958
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f2f3files28456045141112002845604514211401284560451431140128456045241214022845604524221402а из этих какие строки подойдут?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сложный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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