Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
Всем привет есть такая таблица как на картинки. Нужно создать запрос который заполнит поля со значением NULL предыдущим значением. То есть в столбце B первые три строки заполятся значением "прикладная математика" а в столбце А 01.03.04
+


К сообщению приложен файл. Размер - 67Kb
24 май 21, 10:21    [22326067]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
Fitter2
Member

Откуда:
Сообщений: 156
Это у вас Excel ? :)
24 май 21, 11:58    [22326130]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21200
stranikst
Нужно создать запрос который заполнит поля со значением NULL предыдущим значением.
И какой критерий определяет, какое именно значение - предыдущее? на физический порядок строк не указывать - его не существует.
24 май 21, 11:59    [22326131]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
да значение предыдущее, данные с exel но задача стоит именно это сделать sql запросом
24 май 21, 13:00    [22326179]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
Alex_Ustinov
Member

Откуда: Nickel
Сообщений: 3805
stranikst,

>>> это сделать sql запросом

судя по картинке - никак не сделать запросом.
Только Руками

Сообщение было отредактировано: 24 май 21, 12:56
24 май 21, 13:04    [22326183]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
препод же сделал. Переиначу задачу как partion BY указать что бы он разделил строки до начала нового слова после null в столбце А. Это оконные функции over()
24 май 21, 13:12    [22326191]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21200
Тебе же русским по белому говорят - физического порядка не существует. Таблица - это несортированная куча. И то, что без сортировки ты получил записи в каком-то порядке - это считай за случайность, в любой момент при следующей попытке ты можешь получить их в другом порядке.

stranikst
препод же сделал.
Даже если он вдруг сделал - вернее, если у него вдруг получилось,- то он сделал это безграмотно.

stranikst
как partion BY указать что бы он разделил строки до начала нового слова после null в столбце А.

Никак.

Вот если бы в таблице присутствовал хотя бы синтетический ключ-автоинкремент, определяющий именно такой порядок записей - задача была бы решаема. Логически некорректно, но хотя бы корректно синтаксически.
24 май 21, 15:18    [22326276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
ок соглашусь. Вот вам нумерация что делать дальше?

К сообщению приложен файл. Размер - 30Kb
26 май 21, 15:08    [22327508]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21200
UPDATE test t0
JOIN ( SELECT t1.id, MAX(t2.id) t2id
       FROM test t1
       JOIN test t2 ON t1.id > t2.id
       WHERE t1.value IS NULL
         AND t2.value IS NOT NULL
       GROUP BY t1.id ) t3 ON t0.id = t3.id
JOIN test t4 ON t3.t2id = t4.id
SET t0.value = t4.value

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=74541f84979b11c64de261796cad39ec
26 май 21, 16:44    [22327564]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
Класс спасибо только сложно как то у меня еще вот так получилось
WITH t0 as (
select *,
     COUNT(A) OVER(order by RN) as Z
    from table )
, t1 as (

select *,
    FIRST_VALUE(A) OVER ( PARTITION BY Z )  AS N01 from t0
)
select * from t1


Первый select заполняет строки равным значением (создает окна), а потом заполняем верхнее значение ячейки по окну
31 май 21, 13:50    [22329313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
stranikst
Member

Откуда:
Сообщений: 54
Проверяйте:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=3c862289a8573457a6d88d3124f4e43f
31 май 21, 15:01    [22329376]     Ответить | Цитировать Сообщить модератору
 Re: Помогите заполнить строки значением  [new]
paver
Member

Откуда: Томск
Сообщений: 251
stranikst

Первый select заполняет строки равным значением (создает окна), а потом заполняем верхнее значение ячейки по окну

Селекты ничего не заполняют, а выводят результаты отбора. Вы бы тщательнее формулировали задачу.
1 июн 21, 14:37    [22329847]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить