SQL Pro
5.07K subscribers
142 photos
2 videos
10 files
127 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Трюки SQL
3. Видео
4. Тесты
5. Задачи на логику
6. Юмор
Download Telegram
Ответ на #вопрос18

SELECT
SUM (CASE WHEN t>0 THEN t ELSE 0 END) sum_pos,
SUM (CASE WHEN t<0 THEN t ELSE 0 END) sum_neg
FROM weather;


#вопросы #собеседование
Трюк дня. Транспонирование колонки в строку в PostgreSQL

Таблица schools содержит следующие данные:

id grade_1_cnt grade_2_cnt
1 10 11
2 21 22
3 33 34

Напишите PostgreSQL запрос, который возвратит следующий результат:

id key count
1 1 10
1 2 11
2 1 21
2 2 22
3 1 33
3 2 34

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

Код создания таблицы смотрите здесь.

#tips
👍1
Трюк дня. Транспонирование колонки в строку в PostgreSQL. Решение

SELECT
id,
UNNEST (ARRAY ['
1', '2']) AS key,
UNNEST (ARRAY [grade_1_cnt, grade_2_cnt]) AS count
FROM schools;

#tips
В таблице есть колонка price со следующими значениями: {10, 20, 30, NULL}. Каким будет результат выполнения функции AVG (price)?
Anonymous Quiz
40%
20
16%
15
27%
Ошибка: агрегатные функции не могут быть использованы для записей со значениями NULL
8%
NULL
9%
Посмотреть ответы
#вопрос19

Отработает ли данный SQL запрос или упадет с ошибкой:

DELETE FROM table1 HAVING COUNT (field1) > 1

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

Запрос не отработает.

Конструкция HAVING не может использоваться при удалении строк.
Она используется только при операции SELECT и чаще всего вместе с группировкой строк (GROUP BY).

#вопросы #собеседование
Статья дня. Регулярные выражения как способ решения реальных задач в SQL

#sql

Читать статью
Трюк дня. Генерация данных с помощью рекурсии в PostgreSQL

Напишите рекурсивный PostgreSQL запрос, который выдаст таблицу с целыми значениями от 1 до 5:

id
1
2
3
4
5

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

#tips
Трюк дня. Генерация данных с помощью рекурсии в PostgreSQL. Решение

WITH recursive t (v) AS (
SELECT 1 -- Исходное значение
UNION ALL
SELECT v + 1 -- Рекурсия
FROM t
)
SELECT v
FROM t
LIMIT 5

#tips
#вопрос20

Даны таблицы workers и departments. Найдите все департаменты без единого сотрудника.

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

SELECT department_name
FROM workers w
RIGHT JOIN departments d ON (w.department_id = d.department_id)
WHERE first_name IS NULL;

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

Представьте, что земной шар обмотали веревкой по экватору. Затем веревку увеличили на 1 метр и расположили так, что любая точка экватора равноудалена от веревки.

Сможет ли между веревкой и поверхностью земли пролезть мышь?

P.S. под экватором подразумеваем окружность :)

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

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

Ответ: да, сможет. Расстояние между веревкой и экватором составит ≈ 16 см.

Исходная длина = 2*π*R1
Новая длина = 2*π*R2 = Исходная длина + 1
Получаем: 2*π*R2 = 2*π*R1 + 1
Откуда: R2 - R1 = 1/(2*π) ≈ 0.16 м ≈ 16 см

#логика
Трюк дня. Проверка уникальности имени и фамилии

Напишите SQL запрос, который проверит уникальность комбинации name и surname таблицы customers при отсутствии первичных ключей:

name surname
Alex Kruis
Tim Boils
Tom Andreas
Tim Boils

Вариант решения будет вечером.

#tips
Трюк дня. Проверка уникальности имени и фамилии. Решение

SELECT
COUNT (*),
COUNT (DISTINCT name || surname)
FROM customers;

#tips
#вопрос21

Отработает ли данный период запрос или упадёт с ошибкой?

UPDATE table_1 SET field1 = ROW_NUMBER () FROM table_1;

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