powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Просто Трёп [закрыт для гостей] / А можно как-то запросом получить ? MS SQL, Поиск: Искать сообщения, созданные автором: PaNik  
16 сообщений из 16, страница 1 из 1
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #370175
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
eNose  24.04.2023, 19:15
[игнорируется]
Из такой таблицы
id name time
1 aaa 08:00
2 bbb 09:00
3 aaa 08:52
4 aaa 10:00
5 bbb 11:00
6 bbb 10:00
Такой результат
name id1 mintime id2 maxtime
aaa 1 08:00 4 10:00
bbb 2 09:00 5 11:00
То есть получить не только минимальное и максимальное время для каждого name, но и id записи.

Есть тут еще не пропившие мозг базоёбы?
если в таблице name'ов не очень много, то, наверное, можно так
Код: 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.
use tempdb;
go

drop table if exists #a;
create table #a(
   id int not null primary key
  ,[name] varchar(10) not null
  ,[time] time not null
);

insert into #a(id, [name], [time])
values
   (  1,  'aaa',  '08:00')
  ,(  2,  'bbb',  '09:00')
  ,(  3,  'aaa',  '08:52')
  ,(  4,  'aaa',  '10:00')
  ,(  5,  'bbb',  '11:00')
  ,(  6,  'bbb',  '10:00');

; with cte as (
select
    a.name
   ,min(a.id) as id1
   ,min(a.time) as time1
  from #a as a
  group by a.name
)

select
     c.name
    ,c.id1
    ,c.time1 as [minute]
    ,t2.id as id2
    ,t2.time as [maxtime]
  from cte as c
  outer apply (
    select top 1 a.id, a.time
      from #a as a
      where a.name = c.name
      order by a.time desc
  ) as t2
З.Ы. только проснулся, вина нет, жду, когда чай остынет
...
Рейтинг: 1 / 0
Нравится: Гарыныч
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #370176
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Дед-Папыхтет  24.04.2023, 20:07
[игнорируется]
select ...
from (
lag/lead(id/time) over (partition by name order by id) lagid
) T
where lagid is not null
меня чет не прет на оконные функции после вина
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #370183
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
PaNik  25.04.2023, 01:24
[игнорируется]
eNose  24.04.2023, 19:15
[игнорируется]
Из такой таблицы
id name time
1 aaa 08:00
2 bbb 09:00
3 aaa 08:52
4 aaa 10:00
5 bbb 11:00
6 bbb 10:00
Такой результат
name id1 mintime id2 maxtime
aaa 1 08:00 4 10:00
bbb 2 09:00 5 11:00
То есть получить не только минимальное и максимальное время для каждого name, но и id записи.

Есть тут еще не пропившие мозг базоёбы?
если в таблице name'ов не очень много, то, наверное, можно так
Код: 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.
use tempdb;
go

drop table if exists #a;
create table #a(
   id int not null primary key
  ,[name] varchar(10) not null
  ,[time] time not null
);

insert into #a(id, [name], [time])
values
   (  1,  'aaa',  '08:00')
  ,(  2,  'bbb',  '09:00')
  ,(  3,  'aaa',  '08:52')
  ,(  4,  'aaa',  '10:00')
  ,(  5,  'bbb',  '11:00')
  ,(  6,  'bbb',  '10:00');

; with cte as (
select
    a.name
   ,min(a.id) as id1
   ,min(a.time) as time1
  from #a as a
  group by a.name
)

select
     c.name
    ,c.id1
    ,c.time1 as [minute]
    ,t2.id as id2
    ,t2.time as [maxtime]
  from cte as c
  outer apply (
    select top 1 a.id, a.time
      from #a as a
      where a.name = c.name
      order by a.time desc
  ) as t2
З.Ы. только проснулся, вина нет, жду, когда чай остынет
ересь какую-то написал, так вроде интереснее
Код: 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.
43.
44.
45.
use tempdb;
go

drop table if exists #a;
create table #a(
   id int not null primary key
  ,[name] varchar(10) not null
  ,[time] time not null
);

insert into #a(id, [name], [time])
values
   (  1,  'aaa',  '08:00')
  ,(  2,  'bbb',  '09:00')
  ,(  3,  'aaa',  '08:52')
  ,(  4,  'aaa',  '10:00')
  ,(  5,  'bbb',  '11:00')
  ,(  6,  'bbb',  '10:00');

; with cte as (
select
    a.name
  from #a as a
  group by a.name
)

select
     c.name
    ,t1.id as id1
    ,t1.time as [minute]
    ,t2.id as id2
    ,t2.time as [maxtime]
  from cte as c
  outer apply (
    select top 1 a.id, a.time
      from #a as a
      where a.name = c.name
      order by a.time
  ) as t1
  outer apply (
    select top 1 a.id, a.time
      from #a as a
      where a.name = c.name
      order by a.time desc
  ) as t2
...
Изменено: 25.04.2023, 01:47 - PaNik
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387629
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 20:00
[игнорируется]
Мой запрос с джоинам сработает быстрее твоих окошек
Планы в студию
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387631
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Гарыныч  09.05.2023, 20:10
[игнорируется]
Горбатый ёж  09.05.2023, 20:06
[игнорируется]
cat2  09.05.2023, 20:00
[игнорируется]
Мой запрос с джоинам сработает быстрее твоих окошек
Ты проверял?
да, я проверял, а чо?
Давай планы.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387634
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Гарыныч  09.05.2023, 20:13
[игнорируется]
Горбатый ёж  09.05.2023, 20:12
[игнорируется]
Гарыныч  09.05.2023, 20:10
[игнорируется]
Горбатый ёж  09.05.2023, 20:06
[игнорируется]
cat2  09.05.2023, 20:00
[игнорируется]
...
Ты проверял?
да, я проверял, а чо?
Планы в студию.
планы не курю, просто пройди нахуй, Боня
Гарыныч, вот тут ты не прав
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387635
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 20:19
[игнорируется]
Горбатый ёж  09.05.2023, 20:12
[игнорируется]
Гарыныч  09.05.2023, 20:10
[игнорируется]
Горбатый ёж  09.05.2023, 20:06
[игнорируется]
cat2  09.05.2023, 20:00
[игнорируется]
...
Ты проверял?
да, я проверял, а чо?
Планы в студию.
Планы на 8 строках задания и на десяти тысячах строк реальной базы с нужными индексами - большая разница.
ВНЕЗАПНО!
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387650
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 20:27
[игнорируется]
Кстати, еноз так и не опубликовал секретный код запроса, который он использовал в своей фигне. С чем сравнивать?
Имхо он ща под шашлык что-то пьянствует (и правильно делает)
...
Рейтинг: 1 / 0
Нравится: eNose
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387658
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Гарыныч  09.05.2023, 20:35
[игнорируется]
PaNik  09.05.2023, 20:19
[игнорируется]
Гарыныч  09.05.2023, 20:13
[игнорируется]
Горбатый ёж  09.05.2023, 20:12
[игнорируется]
Гарыныч  09.05.2023, 20:10
[игнорируется]
...
Планы в студию.
планы не курю, просто пройди нахуй, Боня
Гарыныч, вот тут ты не прав
в чём я не прав?
Инозий чот там высрал, народ завёлся... а виноват, как обычно , Гарыныч :)))
Йож все правильно сказал
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387672
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Гарыныч  09.05.2023, 20:51
[игнорируется]
Ёж тут не дал своего решения, в отличие от Кот2 !

поетому - ёж - пиздабол!
Сходил бы ты хоть на одно собеседование на позицию "Разработчик MS SQL Server" чтоли.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387674
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 20:57
[игнорируется]
Горбатый ёж  09.05.2023, 20:34
[игнорируется]
cat2  09.05.2023, 20:27
[игнорируется]
Кстати, еноз так и не опубликовал секретный код запроса, который он использовал в своей фигне. С чем сравнивать?
А на каком основании ты тогда утверждаешь, что твои джойны будут быстрее окон, если ты даже не знаешь как использовать оконные функции?
А на каком основании ты утверждаешь, что я не знаю как использовать оконные функции?
Кот, тебе задали вполне конкретный вопрос по теме, ты съезжаешь с аргументом "сам дурак". Хотя о чем я, это же ПТ.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387680
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 21:05
[игнорируется]
PaNik  09.05.2023, 20:59
[игнорируется]
cat2  09.05.2023, 20:57
[игнорируется]
Горбатый ёж  09.05.2023, 20:34
[игнорируется]
cat2  09.05.2023, 20:27
[игнорируется]
...
А на каком основании ты тогда утверждаешь, что твои джойны будут быстрее окон, если ты даже не знаешь как использовать оконные функции?
А на каком основании ты утверждаешь, что я не знаю как использовать оконные функции?
Кот, тебе задали вполне конкретный вопрос по теме, ты съезжаешь с аргументом "сам дурак". Хотя о чем я, это же ПТ.
Оконные функции сначала создают некий набор и работают с ним. Простые джоины обходятся без этого промежуточного действия.
Оконные функции работаю на уже готовом наборе данных, который предложение select возвращает.
...
Рейтинг: 1 / 0
Нравится: Горбатый ёж
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387685
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
cat2  09.05.2023, 21:05
[игнорируется]
Простые джоины обходятся без этого промежуточного действия.
Какого действия? Оконные функции отрабатывают после предложений from (где джоины), where, group by и having.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387687
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
PaNik  09.05.2023, 21:07
[игнорируется]
cat2  09.05.2023, 21:05
[игнорируется]
PaNik  09.05.2023, 20:59
[игнорируется]
cat2  09.05.2023, 20:57
[игнорируется]
Горбатый ёж  09.05.2023, 20:34
[игнорируется]
...
А на каком основании ты утверждаешь, что я не знаю как использовать оконные функции?
Кот, тебе задали вполне конкретный вопрос по теме, ты съезжаешь с аргументом "сам дурак". Хотя о чем я, это же ПТ.
Оконные функции сначала создают некий набор и работают с ним. Простые джоины обходятся без этого промежуточного действия.
Оконные функции работаю на уже готовом наборе данных, который предложение select возвращает.
Тут неверно выразился - оконные функции отрабатывают в предложении select или order by, когда у нас уже есть набор выходных данных.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #387707
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
В 2005. В 2012 были существенно доработаны. Это я тебе и без гугления в Яндексе скажу.
...
Рейтинг: 0 / 0
Просто Трёп / А можно как-то запросом получить ? MS SQL
    #388167
PaNik
Скрыть профиль Поместить в игнор-лист
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Дед-Папыхтет  09.05.2023, 22:54
[игнорируется]
PaNik  09.05.2023, 20:19
[игнорируется]
Гарыныч  09.05.2023, 20:10
[игнорируется]
Горбатый ёж  09.05.2023, 20:06
[игнорируется]
cat2  09.05.2023, 20:00
[игнорируется]
...
Ты проверял?
да, я проверял, а чо?
Давай планы.
План это пыльца марихуаны собранная с яиц казаха?
<тут_должна_быть_картинка_с_Евгением_Вагановичем>
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Просто Трёп [закрыт для гостей] / А можно как-то запросом получить ? MS SQL, Поиск: Искать сообщения, созданные автором: PaNik  
Читали тему (2): Анонимы (2)
Игнорируют тему (1): erbol
Читали форум (100): Анонимы (98), zNomad 1 мин., Артефакт 2 мин.
Пользователи онлайн (120): Анонимы (115), Tosh, Bing Bot, zNomad 1 мин., Yandex Bot 1 мин., Артефакт 2 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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