powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQL [закрыт для гостей] / Спаситеее
25 сообщений из 51, страница 1 из 3
Спаситеее
    #1664887
Людмила
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица.dbf

id | data
------------------
1 | 01.12.26
1 | 01.14.26
7 | 01.14.26
2 | 01.18.26
7 | 01.15.26

нужно запросом SELECT ....... where Id <> 1 and data > {^2026.01.12} получить ближайшую MIN(дату) из имеющихся, где нет Id = 1, т.е. 01.15.26
...
Рейтинг: 0 / 0
Спаситеее
    #1665309
defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмила  15.02.2026, 15:15:55
[игнорируется]
Есть таблица.dbf

id | data
------------------
1 | 01.12.26
1 | 01.14.26
7 | 01.14.26
2 | 01.18.26
7 | 01.15.26

нужно запросом SELECT ....... where Id <> 1 and data > {^2026.01.12} получить ближайшую MIN(дату) из имеющихся, где нет Id = 1, т.е. 01.15.26
слушай сюда, пизда
Ближайшая дата по условию будет 01.14.26, а не 01.15.26

SELECT MIN(data) AS nearest_date
FROM таблица
WHERE id <> 1;
...
Изменено: 15.02.2026, 21:38:19 - defecator
Рейтинг: 0 / 0
Спаситеее
    #1665325
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
defecator  15.02.2026, 21:36:10
[игнорируется]
Ближайшая дата по условию будет 01.14.26
ты кое-что забыл , у этой даты ID=1 :)))
...
и твари бобро
Рейтинг: 0 / 0
Спаситеее
    #1665329
Испытатель диванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator [игнорируется] 

мог бы и нормально ответить без мата
...
Рейтинг: 0 / 0
Спаситеее
    #1665344
Людмила
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator [игнорируется] 

Ближайшая дата по условию будет 01.15.26 т.к. 14.01 имеется Id=1, f по условию Id<>1 (ну и кто из нас пизда, можешь не отвечать)
...
Рейтинг: 1 / 0
Нравится: Гарын
Спаситеее
    #1665353
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмила  15.02.2026, 15:15:55
[игнорируется]
Есть таблица.dbf

id | data
------------------
1 | 01.12.26
1 | 01.14.26
7 | 01.14.26
2 | 01.18.26
7 | 01.15.26

нужно запросом SELECT ....... where Id <> 1 and data > {^2026.01.12} получить ближайшую MIN(дату) из имеющихся, где нет Id = 1, т.е. 01.15.26
Что всё-таки понимается под "ближайшей датой"?
Согласно вашему условию, MIN(датой) для всех записей с Id <> 1 является 01.14.26, а не 01.15.26.

Если же под ближайшей датой понимается дата в прошлом, ближайшая к текущей, то вместо MIN(data), надо ставить MAX(data).
Код: SQL
1.
2.
3.
SELECT MAX(data) AS nearest_date
FROM таблица
WHERE id <> 1;
Если даты могут быть больше текущей (т.е. уходить в будущее), то можно так:
Код: SQL
1.
2.
3.
4.
5.
SELECT data AS nearest_date
FROM таблица
WHERE ABS(CURRENT_DATE - data) = (SELECT MIN(ABS(CURRENT_DATE - data))
                FROM таблица
                WHERE id <> 1);
P.S. И не называйте колонку с датой "data", это переводится как "данные". Лучше назовите "date".
...
Рейтинг: 0 / 0
Спаситеее
    #1665356
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Людмила  15.02.2026, 22:55:47
[игнорируется]
defecator [игнорируется] 

Ближайшая дата по условию будет 01.15.26 т.к. 14.01 имеется Id=1, f по условию Id<>1 (ну и кто из нас пизда, можешь не отвечать)
походу Дефекатор про ипался.....
а задачка то с подвохом :)))
...
и твари бобро
Рейтинг: 0 / 0
Спаситеее
    #1665358
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  15.02.2026, 23:40:24
[игнорируется]
Что всё-таки понимается под "ближайшей датой"?
Согласно вашему условию, MIN(датой) для всех записей с Id <> 1 является 01.14.26, а не 01.15.26.
у ИД =1 две даты : 01.12.26 и 01.14.26
из остальных ИД надо найти бОльшую дату , чем 01.14.26 ( у них ид=1)

т.е. ответом должно быть ид=7, дате= 01.15.26
...
и твари бобро
Изменено: 16.02.2026, 00:00:57 - Гарын
Рейтинг: 0 / 0
Спаситеее
    #1665367
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  15.02.2026, 23:57:33
[игнорируется]
Кусь  15.02.2026, 23:40:24
[игнорируется]
Что всё-таки понимается под "ближайшей датой"?
Согласно вашему условию, MIN(датой) для всех записей с Id <> 1 является 01.14.26, а не 01.15.26.
у ИД =1 две даты : 01.12.26 и 01.14.26
из остальных ИД надо найти бОльшую дату к 01.14.26
Условие коряво написано, но погадаем ещё. Возможно, если дата уже однажды засветилась с Id=1, её надо отбросить и брать другую ближайшую (минимальную дату), у которой ещё не было Id = 1.

Тогда можно так:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (
select 1 as id, to_date('Jan 12, 2026', 'Mon DD, YYYY') as data
union all
select 1 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 2 as id, to_date('Jan 18, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 15, 2026', 'Mon DD, YYYY')
)
select MIN(data) as nearest_date from t
where data not in (select data from t where id = 1);
изображение_2026-02-15_221333629.png
...
Изменено: 16.02.2026, 00:14:30 - Кусь
Рейтинг: 1 / 0
Нравится: Гарын
Спаситеее
    #1665368
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:13:58
[игнорируется]
Гарын  15.02.2026, 23:57:33
[игнорируется]
Кусь  15.02.2026, 23:40:24
[игнорируется]
Что всё-таки понимается под "ближайшей датой"?
Согласно вашему условию, MIN(датой) для всех записей с Id <> 1 является 01.14.26, а не 01.15.26.
у ИД =1 две даты : 01.12.26 и 01.14.26
из остальных ИД надо найти бОльшую дату к 01.14.26
Условие коряво написано, но погадаем ещё. Возможно, если дата уже однажды засветилась с Id=1, её надо отбросить и брать другую ближайшую (минимальную дату), у которой ещё не было Id = 1.

Тогда можно так:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (
select 1 as id, to_date('Jan 12, 2026', 'Mon DD, YYYY') as data
union all
select 1 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 2 as id, to_date('Jan 18, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 15, 2026', 'Mon DD, YYYY')
)
select MIN(data) as nearest_date from t
where data not in (select data from t where id = 1);
изображение_2026-02-15_221333629.png
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще? ( если строк будет не 5 а 100500 )
...
и твари бобро
Изменено: 16.02.2026, 00:18:42 - Гарын
Рейтинг: 0 / 0
Спаситеее
    #1665369
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы с Гарынычем всё решим, всем поможем!
Не то что некоторые. [:grin]
...
Рейтинг: 1 / 0
Нравится: Гарын
Спаситеее
    #1665371
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:17:25
[игнорируется]
Кусь  16.02.2026, 00:13:58
[игнорируется]
Гарын  15.02.2026, 23:57:33
[игнорируется]
Кусь  15.02.2026, 23:40:24
[игнорируется]
Что всё-таки понимается под "ближайшей датой"?
Согласно вашему условию, MIN(датой) для всех записей с Id <> 1 является 01.14.26, а не 01.15.26.
у ИД =1 две даты : 01.12.26 и 01.14.26
из остальных ИД надо найти бОльшую дату к 01.14.26
Условие коряво написано, но погадаем ещё. Возможно, если дата уже однажды засветилась с Id=1, её надо отбросить и брать другую ближайшую (минимальную дату), у которой ещё не было Id = 1.

Тогда можно так:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (
select 1 as id, to_date('Jan 12, 2026', 'Mon DD, YYYY') as data
union all
select 1 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 2 as id, to_date('Jan 18, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 15, 2026', 'Mon DD, YYYY')
)
select MIN(data) as nearest_date from t
where data not in (select data from t where id = 1);
изображение_2026-02-15_221333629.png
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще?
Сам запрос-то - две последние строчки. Чтобы не создавать таблицу, я просто написал табличные данные через WITH.
...
Рейтинг: 0 / 0
Спаситеее
    #1665372
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:18:16
[игнорируется]
Мы с Гарынычем всё решим, всем поможем!
Не то что некоторые. [:grin]
Гарын  16.02.2026, 00:17:25
[игнорируется]
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще? ( если строк будет не 5 а 100500 )
...
и твари бобро
Изменено: 16.02.2026, 00:20:46 - Гарын
Рейтинг: 0 / 0
Спаситеее
    #1665373
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:17:25
[игнорируется]
Кусь  16.02.2026, 00:13:58
[игнорируется]
Гарын  15.02.2026, 23:57:33
[игнорируется]
Кусь  15.02.2026, 23:40:24
[игнорируется]
...
у ИД =1 две даты : 01.12.26 и 01.14.26
из остальных ИД надо найти бОльшую дату к 01.14.26
Условие коряво написано, но погадаем ещё. Возможно, если дата уже однажды засветилась с Id=1, её надо отбросить и брать другую ближайшую (минимальную дату), у которой ещё не было Id = 1.

Тогда можно так:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (
select 1 as id, to_date('Jan 12, 2026', 'Mon DD, YYYY') as data
union all
select 1 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 14, 2026', 'Mon DD, YYYY')
union all
select 2 as id, to_date('Jan 18, 2026', 'Mon DD, YYYY')
union all
select 7 as id, to_date('Jan 15, 2026', 'Mon DD, YYYY')
)
select MIN(data) as nearest_date from t
where data not in (select data from t where id = 1);
изображение_2026-02-15_221333629.png
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще?
Сам запрос-то - две последние строчки. Чтобы не создавать таблицу, я просто переписал исходные данные через WITH.
...
Рейтинг: 0 / 0
Спаситеее
    #1665374
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:20:09
[игнорируется]
Кусь  16.02.2026, 00:18:16
[игнорируется]
Мы с Гарынычем всё решим, всем поможем!
Не то что некоторые. [:grin]
Гарын  16.02.2026, 00:17:25
[игнорируется]
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще? ( если строк будет не 5 а 100500 )
В самом запросе ничего не поменяется.
...
Рейтинг: 0 / 0
Спаситеее
    #1665376
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:22:24
[игнорируется]
Гарын  16.02.2026, 00:20:09
[игнорируется]
Кусь  16.02.2026, 00:18:16
[игнорируется]
Мы с Гарынычем всё решим, всем поможем!
Не то что некоторые. [:grin]
Гарын  16.02.2026, 00:17:25
[игнорируется]
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще? ( если строк будет не 5 а 100500 )
В самом запросе ничего не поменяется.
а можно как-то без УНИОНОВ ?
типа : найти ИД и Дату - у которых дата чуть больше , чем максимальная дата у ИД с номером 1 :)))
( давно я не брал в руки шашки :))) )
...
и твари бобро
Рейтинг: 0 / 0
Спаситеее
    #1665377
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:25:32
[игнорируется]
Кусь  16.02.2026, 00:22:24
[игнорируется]
Гарын  16.02.2026, 00:20:09
[игнорируется]
Кусь  16.02.2026, 00:18:16
[игнорируется]
Мы с Гарынычем всё решим, всем поможем!
Не то что некоторые. [:grin]
Гарын  16.02.2026, 00:17:25
[игнорируется]
да, ты прошёл ТЕСТ :))), но какой-то сложный запрос у тебя получился :) в итоге,
а можно попроще? ( если строк будет не 5 а 100500 )
В самом запросе ничего не поменяется.
а можно как-то без УНИОНОВ ?
типа : найти ИД и Дату - у которых дата чуть больше , чем максимальная дата у ИД с номером 1 :)))
( давно я не брал в руки шашки :))) )
Говно вопрос, бро:
Код: SQL
1.
2.
select MIN(data) as nearest_date from t
where data > (select MAX(data) from t where id = 1);
P.S. Но зачем там были union all, ты, похоже, не понял. Но это не страшно. :)))
...
Рейтинг: 0 / 0
Спаситеее
    #1665381
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:30:20
[игнорируется]
Гарын  16.02.2026, 00:25:32
[игнорируется]
Кусь  16.02.2026, 00:22:24
[игнорируется]
Гарын  16.02.2026, 00:20:09
[игнорируется]
Кусь  16.02.2026, 00:18:16
[игнорируется]
...
Гарын  16.02.2026, 00:17:25
[игнорируется]
...
В самом запросе ничего не поменяется.
а можно как-то без УНИОНОВ ?
типа : найти ИД и Дату - у которых дата чуть больше , чем максимальная дата у ИД с номером 1 :)))
( давно я не брал в руки шашки :))) )
Говно вопрос, бро:
Код: SQL
1.
2.
select MIN(data) as nearest_date from t
where data > (select MAX(data) from t where id = 1);
P.S. Но зачем там были union all, ты, похоже, не понял. Но это не страшно. :)))
о, то что надо !!! уложились в 2 строки :)
...
и твари бобро
Рейтинг: 0 / 0
Спаситеее
    #1665382
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:30:20
[игнорируется]
P.S. Но зачем там были union all, ты, похоже, не понял. Но это не страшно. :)))
да
...
и твари бобро
Рейтинг: 0 / 0
Спаситеее
    #1665387
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:36:22
[игнорируется]
Кусь  16.02.2026, 00:30:20
[игнорируется]
Гарын  16.02.2026, 00:25:32
[игнорируется]
Кусь  16.02.2026, 00:22:24
[игнорируется]
Гарын  16.02.2026, 00:20:09
[игнорируется]
...
В самом запросе ничего не поменяется.
а можно как-то без УНИОНОВ ?
типа : найти ИД и Дату - у которых дата чуть больше , чем максимальная дата у ИД с номером 1 :)))
( давно я не брал в руки шашки :))) )
Говно вопрос, бро:
Код: SQL
1.
2.
select MIN(data) as nearest_date from t
where data > (select MAX(data) from t where id = 1);
P.S. Но зачем там были union all, ты, похоже, не понял. Но это не страшно. :)))
о, то что надо !!! уложились в 2 строки :)
Можно в три строки, тогда получим ещё и айдишник:
Код: SQL
1.
2.
3.
select id, data from t
where data > (select MAX(data) from t where id = 1)
order by data limit 1;
изображение_2026-02-15_224156770.png
...
Изменено: 16.02.2026, 00:41:59 - Кусь
Рейтинг: 0 / 0
Спаситеее
    #1665388
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 00:41:27
[игнорируется]
Гарын  16.02.2026, 00:36:22
[игнорируется]
Кусь  16.02.2026, 00:30:20
[игнорируется]
Гарын  16.02.2026, 00:25:32
[игнорируется]
Кусь  16.02.2026, 00:22:24
[игнорируется]
...
а можно как-то без УНИОНОВ ?
типа : найти ИД и Дату - у которых дата чуть больше , чем максимальная дата у ИД с номером 1 :)))
( давно я не брал в руки шашки :))) )
Говно вопрос, бро:
Код: SQL
1.
2.
select MIN(data) as nearest_date from t
where data > (select MAX(data) from t where id = 1);
P.S. Но зачем там были union all, ты, похоже, не понял. Но это не страшно. :)))
о, то что надо !!! уложились в 2 строки :)
Можно в три строки, тогда получим ещё и айдишник:
Код: SQL
1.
2.
3.
select id, dat from t
where dat > (select MAX(dat) from t where id = 1)
order by dat ASC  limit 1;
о , то что мну хотел скозать словами!!! супер!
Кусю - двойную порцию пирожков домашних от Людмилы!

зы:
Цитата 
[игнорируется]
Запрос SQL «ORDER BY дата LIMIT 1» — это конструкция, которая позволяет упорядочить строки по дате (или другому столбцу) в обратном порядке (параметр DESC) и ограничить число строк в результатах (параметр LIMIT 1).
bipp.io
sky.pro
sky.pro
ORDER BY упорядочивает строки по указанному столбцу, по умолчанию сортировка выполняется по возрастанию (ASC). Можно сортировать по нескольким столбцам, по алиасам или вычисляемым выражениям.
mousedc.ru
skillbox.ru
LIMIT ограничивает число строк в результатах, в данном случае выводят только одну, самую последнюю запись.
sky.pro
Важно: ORDER BY не изменяет порядок хранения данных в таблице, он сортирует только результат запроса.
skillbox.ru
поправочка, мана ( ASC )
...
и твари бобро
Изменено: 16.02.2026, 00:52:56 - Гарын
Рейтинг: 1 / 0
Нравится: Кусь
Спаситеее
    #1665391
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь [игнорируется] 

Кусь, а ASC там нада или лишнее?
Код: SQL
1.
2.
3.
select id, dat from t
where dat > (select MAX(dat) from t where id = 1)
order by dat ASC  limit 1;
( видимо лишнее, потму-что ASC по умолчанию...., да?
но с ASC понятней и читабельней ( имхо), ведь умолчание могёт и поменяться.... :))) )

)
...
и твари бобро
Изменено: 16.02.2026, 01:00:05 - Гарын
Рейтинг: 0 / 0
Спаситеее
    #1665396
Кусь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарын  16.02.2026, 00:56:46
[игнорируется]
Кусь [игнорируется] 

Кусь, а ASC там нада или лишнее?
Код: SQL
1.
2.
3.
select id, dat from t
where dat > (select MAX(dat) from t where id = 1)
order by dat ASC  limit 1;
( видимо лишнее, потму-что ASC по умолчанию...., да?
но с ASC понятней и читабельней ( имхо), ведь умолчание могёт и поменяться.... :))) )

)
[:facepalm]

Пора, наверное, спать. Всем доброй ночи. [:smile]
...
Рейтинг: 0 / 0
Спаситеее
    #1665398
Гарын
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3-й статус
Кусь  16.02.2026, 01:01:23
[игнорируется]
Гарын  16.02.2026, 00:56:46
[игнорируется]
Кусь [игнорируется] 

Кусь, а ASC там нада или лишнее?
Код: SQL
1.
2.
3.
select id, dat from t
where dat > (select MAX(dat) from t where id = 1)
order by dat ASC  limit 1;
( видимо лишнее, потму-что ASC по умолчанию...., да?
но с ASC понятней и читабельней ( имхо), ведь умолчание могёт и поменяться.... :))) )

)
[:facepalm]

Пора, наверное, спать. Всем доброй ночи. [:smile]
я фигню спорол? сорри тогда

зы : завтра порешаем с двумя параметрами ? :)))
@ИД_покупателя и @дата_покупки :)))
...
и твари бобро
Изменено: 16.02.2026, 01:05:43 - Гарын
Рейтинг: 0 / 0
Спаситеее
    #1665493
Людмила
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ребят, не ожидала! Большое Спасибо!
Ща раскидаю дела, засяду разбираться.
Отпишусь.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / SQL [закрыт для гостей] / Спаситеее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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