powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Странное задание-тест при устройстве
11 сообщений из 11, страница 1 из 1
Странное задание-тест при устройстве
    #40069971
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.

Сегодня проходил тестовые задания для дистанционное работы. Задания как задания, но одно очень странное. Я потратил на него 1 час и так не смог получить то что требовалось.
Задача следующая:
Код: sql
1.
2.
5) Есть таблица CREATE TABLE t1(ID integer NOT NULL,STR varchar(50))
Одним запросом: заменить значения в столбце STR на значение TEST в строках с ID менее 5, для измененных строк выдать значения столбца ID через запятую одной строкой.


Главная фраза здесь = для измененных строк выдать значения столбца ID через запятую одной строкой
Все что я придумал (в принципе это пришло в голову сразу) :

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
postgres=# update public.newtable set str='str' where id<5 returning id;
 id 
----
  1
  2
  3
  4
(4 строки)

UPDATE 4
postgres=# 


Затем , пытался по всякому объединить в одну запись и через массивы и сложные запросы и текстовые массивы. Вариантов 20 перепробовал или ошибки, или результат как у меня.

Вопрос - это вообще реально сделать на PostgreSQL. У меня просто спортивные интерес , ж-ж-жужжит таки прямо (тесты уже закончились).
.
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069983
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069985
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость


Здесь нужно вернуть в виде ОДНОЙ СТРОКИ ЧЕРЕЗ ЗАПЯТУЮ!
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069986
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,
select ... string_agg (a.field1, ', ')
from (update table
returning field1) a
не прокатит ?
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069989
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069993
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
peter64,

Это все не то. Это возврат ОДНОЙ СТРОКИ с данными , в которой перечислено несколько столбцов из запроса.
Здесь не возвращается несколько строк и их нужно обернуть в виде одного массива или строки.

Все что высылаете я это хорошо знаю, но они в данном задании бесполезны.
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40069999
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

а меня-то вот в гугле разбанили:
https://stackoverflow.com/questions/27004624/postgresql-returning-into-array
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40070000
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with aaa as (update t1 set "str"='TEST' where id<5 returning id)
select array_agg(id) from aaa;


 array_agg 
-----------
 {1,2,3,4}
(1 row)
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40070008
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Не поверите, но данный запрос так же был
делал вот так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH 
updated AS (
	update
    public.newtable set str='str' where id<5 
    RETURNING id
)
SELECT string_agg(id,',') 
FROM updated;



Обидно, был весьма близко к правильному ответу.

Спасибо Guzya за ответ/подсказку.
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40070012
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH 
uuu AS (
update
    public.t1 set str='str' where id<5 
    RETURNING id
)
SELECT string_agg(id) 
FROM uuu;
ОШИБКА:  функция string_agg(integer) не существует
СТРОКА 7: SELECT string_agg(id) 
                 ^
ПОДСКАЗКА:  Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов.



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
postgres=# WITH 
uuu AS (
update
    public.t1 set str='str' where id<5 
    RETURNING id
)
SELECT array_agg(id) 
FROM uuu;
 array_agg 
-----------
 {1,2,3,4}
(1 строка)



Обидно. хотя и с массивом так же пробовал, только там было еще ',' (как для string_agg в инструкции описано, а этого делать не нужно было).
Жалко, но да ладно, теперь буду знать.
...
Рейтинг: 0 / 0
Странное задание-тест при устройстве
    #40070018
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кому пригодится.
Вот возврат данных в виде текста:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH 
uuu AS (
update
    public.t1 set str='str' where id<5 
    RETURNING id
)
SELECT string_agg(id::text,',') 
FROM uuu;
 string_agg 
------------
 1,2,3,4
(1 строка)



.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Странное задание-тест при устройстве
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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