Дата

Здравствуйте! Есть таблица с колонками id(autoincrement), date
Обнаружил дату которая легла не по возрастанию, примерно так:
"2016-01-01"
"2016-02-01"
"2016-03-01"
"2012-07-22"
"2016-05-01"

Подскажите как найти id_ с неверной датой("2012-07-22") ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Порядок расположения записей

Порядок расположения записей в таблице ничего не значит!
Вы, похоже, не знаете SQL совсем.

Если очень надо хоть как-то ответить на вопрос, то вот:

SELECT *
FROM TABLE
WHERE date < '2016-01-01'
ORDER BY date

?CREATE TABLE tbl (id

?

CREATE TABLE tbl (id serial, dt date);
INSERT INTO tbl(dt) VALUES (date '2016-01-01');
INSERT INTO tbl(dt) VALUES (date '2016-02-01');
INSERT INTO tbl(dt) VALUES (date '2016-03-01');
INSERT INTO tbl(dt) VALUES (date '2012-07-22');
INSERT INTO tbl(dt) VALUES (date '2016-05-01');

SELECT t1.id 
FROM tbl t1 JOIN tbl t2 ON t1.id = t2.id + 1
WHERE t1.dt < t2.dt

WITH q AS (SELECT tbl.*, lead(tbl.id) over (ORDER BY id) lid FROM tbl)
SELECT q1.id 
 FROM q q1 JOIN q q2 ON q1.id = q2.lid
WHERE q1.dt < q2.dt

Помогите найти таск 3-го и 8-го id, там где дата неверная

id date task
1 2016/01 123456
2 2016/02 123456
3 2011/05 123456
4 2016/04 123456
5 2016/05 123456
6 2016/01 654321
7 2016/02 654321
8 2012/02 654321
9 2016/04 654321
10 2016/05 654321

таблица большая! Нужно найти неверную дату которая идет не по порядку!

CREATE TABLE tbl(id integer,

CREATE TABLE tbl(id integer,
                 dt varchar(30),
                 task integer
               );
INSERT INTO tbl(id, dt, task) VALUES (1,'2016/01',123456);
INSERT INTO tbl(id, dt, task) VALUES (2,'2016/02',123456);
INSERT INTO tbl(id, dt, task) VALUES (3,'2011/05',123456);
INSERT INTO tbl(id, dt, task) VALUES (4,'2012/05',123456);
INSERT INTO tbl(id, dt, task) VALUES (5,'2016/04',123456);
INSERT INTO tbl(id, dt, task) VALUES (6,'2016/05',123456);
INSERT INTO tbl(id, dt, task) VALUES (7,'2017/01',654321);
INSERT INTO tbl(id, dt, task) VALUES (8,'2017/02',654321);
INSERT INTO tbl(id, dt, task) VALUES (9,'2012/02',654321);
INSERT INTO tbl(id, dt, task) VALUES (10,'2017/04',654321);
INSERT INTO tbl(id, dt, task) VALUES (11,'2017/05',654321);     

SELECT id,
       to_date(dt||'/01', 'yyyy/mm/dd') dt, 
       task,
       nullif(first_value(to_date(dt||'/01', 'yyyy/mm/dd')) over (partition BY task ORDER BY id),
               least(to_date(dt||'/01', 'yyyy/mm/dd'), 
                       first_value(to_date(dt||'/01', 'yyyy/mm/dd')) over (partition BY task ORDER BY id)
                      )
              ),
       min(to_date(dt||'/01', 'yyyy/mm/dd')) over (partition BY task rows BETWEEN current row AND unbounded following)
FROM tbl
ORDER BY task, id

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023