SQL Pro
5.28K subscribers
145 photos
10 files
124 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Трюки SQL
3. Видео
4. Тесты
5. Задачи на логику
6. Юмор
加入频道
Трюк дня. Изменить тип поля с CHARACTER на NUMERIC в PostgreSQL. Решение

ALTER TABLE customers
ALTER COLUMN age
TYPE NUMERIC (10,0)
USING age::NUMERIC;


ИЛИ

ALTER TABLE customers
ALTER COLUMN age
TYPE NUMERIC (10,0)
USING CAST(age AS NUMERIC);


#tips
👍14
С помощью какого PostgreSQL запроса можно выбрать значение ‘Beer‘ из JSON поля info:
{“customer”:”John”,”items”:{“product”:”Beer”,”qty”:6}}?
Anonymous Quiz
10%
SELECT info -> ‘product’;
20%
SELECT info -> ‘customer’ -> ‘items’ ->> ‘product’;
33%
SELECT info -> ‘items’ ->> ‘product’;
17%
Ничего из перечисленного
19%
Посмотреть ответы
👍3
#вопрос30

В таблице tbl в поле nmbr содержатся записи со следующими значениями:
1, 0, 0, 1, 1, 1, 1, 0, 0.

Напишите запрос, который добавит 2, если значение nmbr = 0 и добавит 3, если значение nmbr = 1.

#вопросы #собеседование
👍8🏆3
Ответ на #вопрос30

UPDATE tbl
SET nmbr =
CASE WHEN nmbr = 0
THEN nmbr + 2
ELSE nmbr + 3
END;


#вопросы #собеседование
👍23👎5
👍15🤔2
Трюк дня. Возвратить 0 для функции SUM если не найдено ни одного значения в MySQL

Перепишите запрос так, чтобы он возвратил 0, если для функции SUM не найдено ни одного значения, кроме NULLs.

И возвратил сумму, если значения найдены.

SELECT SUM (column_1)
FROM table
WHERE column_2 = ‘Test‘;


Решение будет вечером.

#tips
👍8
Трюк дня. Возвратить 0 для функции SUM если не найдено ни одного значения в MySQL. Решение

SELECT COALESCE(SUM(column_1),0)
FROM table
WHERE column_2 = ‘Test‘;


#tips
👍13🤯4👎2
С помощью какой конструкции можно проанализировать использование индекса?
Anonymous Quiz
24%
INDEX USAGE
29%
EXPLAIN
19%
SHOW INDEXES
11%
TEST INDEX
16%
Узнать ответ
👍4😁4
#вопрос31

Что такое оконная функция? И в чем отличие от функции агрегации с группировкой?

#вопросы #собеседование
Ответ на #вопрос31

Оконная функция в SQL - функция, которая работает с выделенным набором строк (окном, партицией) и выполняет вычисление для этого набора строк в отдельном столбце.

При использовании агрегирующих функций предложение GROUP BY сокращает количество строк в запросе с помощью их группировки.

При использовании оконных функций количество строк в запросе не уменьшается по сравнению с исходной таблицей.

#вопросы #собеседование
👍20👏4
Статья дня. Основы мониторинга PostgreSQL

#sql

Читать статью
👍1
Трюк дня. Подсчет уникальных id с учетом NULLs в PostgreSQL

Есть таблица t1 со следующими данными:
id
1
2
NULL
NULL
3

Напишите PostgreSQL запрос, который подсчитает количество уникальных id.
При этом записи с NULL должны считаться как одна запись. Ожидаемый ответ: 4.

А также количество уникальных id без учета NULLs. Ожидаемый ответ: 3.

Решение будет вечером.

#tips
👍1
Трюк дня. Подсчет уникальных id с учетом NULLs в PostgreSQL. Решение

WITH new_table AS (
SELECT id FROM t1
UNION
SELECT NULL
)
SELECT
COUNT(*),
COUNT(DISTINCT id)
FROM new_table;

#tips
👎4🍌4👍2
С помощью какого ключевого слова можно соединить строки из нескольких таблиц, основываясь на их связи?
Anonymous Quiz
4%
IMPLODE
83%
JOIN
4%
WHERE
4%
Все варианты неверные
5%
Узнать ответ
👍11👎5🌚21
#вопрос32

Что вы знаете о функции OVERLAY() в PostgreSQL?

#вопросы #собеседование
Ответ на #вопрос32

Функция OVERLAY() заменяет часть строки на другую подстроку, начиная с заданной позиции:

OVERLAY(main_string PLACING replacing_string FROM int [FOR int]);

main_string -
строка, которую изменяем.

replacing_string - подстрока, которую вставляем в main_string.

FROM int - позиция, с которой начнётся замена.

FOR int - количество заменяемых символов. Необязательно.

Например:

SELECT OVERLAY('who Pro' PLACING 'SQL' FROM 1);

#вопросы #собеседование
👍2
Задача на мышление и логику.

Решение будет вечером.

#логика
👍91
Решение сегодняшней задачи на логику и мышление.

Ответ: (5-(1:5))*5=24

#логика
👍33👎1
Трюк дня. Выбор предыдущего значения для каждой группы в MySQL

Есть таблица orders_comb со следующими данными:
p_type   year   values
Car 2001 350000
Car 2002 550000
Plane 2002 8900000
Bicycle 2000 1500
Bicycle 2001 2400


Напишите MySQL запрос, который для каждой записи возвратит values из предыдущего year внутри каждого p_type.

Решение будет вечером.

#tips
👍5
Трюк дня. Выбор предыдущего значения для каждой группы в MySQL. Решение

SELECT
p_type,
year,
values,
LAG (values, 1) OVER (
PARTITION BY p_type
ORDER BY year
) prev_year_value
FROM
orders_comb;

#tips
👍10
🔥7👎4