Данные импортируются с названием колонок заглавными буквами.
row_to_json(NEW)
, и вся структура как на ладошке.HAVING MAX( (apps.in_trash is not true
and apps.status = 4
and apps.filial_id = 1
and apps.invoice_id is not null
) :: INT
) > 0
ORDER BY w
? Сортировка по определению окна? Вы же сами приводите правильную цитату: Оконные функции разрешается использовать в запросе только в списке SELECT и предложении ORDER BY.
SELECT sum(num) OVER w
FROM my_table
WINDOW w AS (PARTITION BY name)
ORDER BY MAX(num) OVER w
мне необходимо удалить строку из одной таблицы и эту же строку добавить в другую таблицу.
WITH cte AS (
DELETE
FROM table1
WHERE {criteria}
RETURNING *
)
INSERT
INTO table2
SELECT *
FROM cte;
-- или
WITH cte AS (
INSERT
INTO table2
SELECT *
FROM table1
WHERE {criteria}
RETURNING id
)
DELETE
FROM table1
WHERE id IN (
SELECT id
FROM cte
);
WITH cte AS (
SELECT *,
SUM((flag IS NULL) :: INT) OVER (PARTITION BY user_id ORDER BY product_id ASC) grp
FROM test
)
SELECT product_id, user_id, flag,
DENSE_RANK() OVER (PARTITION BY user_id ORDER BY grp ASC) "rank"
FROM cte
ORDER BY 1,2;
"Итог" numeric GENERATED ALWAYS AS ( COALESCE("Январь", 0) +
COALESCE("Февраль", 0) +
COALESCE("Март", 0) +
COALESCE("Апрель", 0) +
COALESCE("Май", 0) +
COALESCE("Июнь", 0) +
COALESCE("Июль", 0) +
COALESCE("Август", 0) +
COALESCE("Сентябрь", 0) +
COALESCE("Октябрь", 0) +
COALESCE("Ноябрь", 0) +
COALESCE("Декабрь", 0) ) STORED
SELECT amount || ' ' ||
CASE WHEN amount % 100 / 10 = 1 THEN 'автомобилей'
WHEN amount % 10 = 1 THEN 'автомобиль'
WHEN amount % 10 IN (2,3,4) THEN 'автомобиля'
ELSE 'автомобилей'
END
FROM generate_series(0,600) AS source (amount)
Запрос
SELECT * FROM base WHERE domain LIKE '%habr%' LIMIT 10000;
Задача заключается в том, чтобы добавить еще одну колонку для мультиязычности, назвав DocTypeEn, в котором будет перевод.
CREATE TABLE translation (
token_id INT, -- идентификатор строки
language_id INT, -- идентификатор языка
PRIMARY KEY (token_id, language_id),
value VARCHAR(100) NULL DEFAULT NULL
);
SELECT value
FROM translation
JOIN language USING (language_id)
WHERE token_id = @token_id
AND language_name = @language_name;
SELECT COALESCE((
SELECT value
FROM translation
JOIN language USING (language_id)
WHERE token_id = @token_id
AND language_name = @language_name;
), (
SELECT value
FROM translation
JOIN language USING (language_id)
WHERE token_id = @token_id
AND language_name = @default_language_name;
)) value;
{
"ru":"Выход",
"en":"Quit"
}
Если кто-то набросает какой-нибудь PL/pgSQL код в любом фиддле, для иллюстрации что на нем можно делать - буду премного благодарен.
Процедуры, в отличие от функций, не возвращают значение; поэтому в CREATE PROCEDURE отсутствует предложение RETURNS. Однако процедуры могут выдавать данные в вызывающий код через выходные параметры.
?|
в PostgreSQL выполняет поиск строковых значений в списке элементов массива или ключей (имён атрибутов) объекта:jsonb ?| text[] → boolean
Do any of the strings in the text array exist as top-level keys or array elements?
'{"a":1, "b":2, "c":3}'::jsonb ?| array['b', 'd'] → t
&&
WITH cte AS (
SELECT t1.cat_id, RANK() OVER (ORDER BY COUNT(t2.cat_id) DESC) rnk
FROM user_to_cat t1
JOIN user_to_cat t2 ON t1.user_id = t2.user_id
AND t1.cat_id <> t2.cat_id
GROUP BY 1
)
SELECT category.code
FROM cte
JOIN category ON category.id = cte.cat_id
WHERE rnk = 1