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
Трюк дня. Удаление лишних пробелов в строке с использованием REGEX.

Предположим, есть строка, содержащая такой текст:
This is a test string

Требуется удалить из строки лишние пробелы.


Решение:
Используйте функцию REGEXP_REPLACE:

SELECT
REGEXP_REPLACE('This is a test string','( ){2,}',' ');


Данная функция поддерживается в PostgreSQL и MySQL.

#tips
#вопрос6

Что такое Представление?

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

Представление - это виртуальная таблица, созданная на основе результата выполнения SQL-запроса.

Представление содержит строки и столбцы, как и реальная таблица.

Поля в представлении - это поля из одной или нескольких реальных таблиц в базе данных.

#вопросы #собеседование
Tips & Tricks. Индексация: Базовые понятия

В этой статье на простом примере описано, что такое индексация, индекс, рассмотрены некоторые типы индексов и способы их создания.

#sql

Читать статью
👍1
Трюк дня. Найти максимальное значение из двух колонок таблицы

Например, есть таблица:

customer value_1 value_2
Alex 5 18
Sam 1 19
Sam 3 2

В результате нужно получить следующее:

customer max
Alex 18
Sam 19
Sam 3


В PostgreSQL, MySQL и Oracle можно воспользоваться функцией GREATEST:

SELECT customer, GREATEST (value_1, value_2) FROM table;


В SQL Server подобной функции нет, поэтому можно решить эту задачу так:

SELECT customer, MAX (x.combined_val) AS greatest
FROM table AS u
CROSS APPLY (SELECT u.value_1 UNION ALL SELECT u.value_2) AS x(combined_val)
GROUP BY customer;

#tips
Какой один и тот же результат возвращают данные функции:

LENGTH в MySQL, OCTET_LENGTH в PostgreSQL, DATALENGTH в MS SQL, LENGTHB в Oracle?
Anonymous Quiz
43%
Количество символов в строке
4%
Количество слов в строке
38%
Длину строки в байтах
4%
Ничего из перечисленного
10%
Посмотреть ответы
Сколько записей возвратит следующий запрос:

SELECT 22 UNION SELECT 35 UNION SELECT 22;
Anonymous Quiz
8%
1
26%
2
24%
3
7%
NULL
15%
Ничего из перечисленного
20%
Посмотреть ответы
#вопрос7

Почему данный код выведет ошибку?

SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';

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

Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.

Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT

Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.

Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:

WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';

А какие еще варианты решения данной проблемы вы знаете?

#вопросы #собеседование
Tips & Tricks. SQL vs NoSQL в примерах

В этой статье мы рассмотрим примеры, демонстрирующие, как выполнять запросы к базам данных SQL и NoSQL.

#sql

Читать статью
Задача на логику.

Кабель длиной 80 метров висит на двух столбах. Высота каждого столба — 50 метров.

Каково расстояние между столбами, если центр провисающего кабеля находится на высоте 10 метров от земли?

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

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

Ответ: 0.

Кабель длиной 80 метров провисает на высоте 10 метров от земли. При этом высота столба 50 метров. Значит, если провести горизонтальную линию через точку провисания каната, верхняя часть столба будет равняться 40 метрам.

Если верхняя часть столба 40 метров и длина кабеля до середины — тоже 40 метров, то это не треугольник а прямая линия. И соответственно, расстояние между столбами будет равно 0.

А как бы вы решили эту задачу, если бы центр кабеля находился на расстоянии 20 метров от земли?

#логика
Какой ранг будет у записи с id = 3 с картинки выше, если использовать следующую функцию:

RANK() OVER (ORDER BY firstname) ?
Anonymous Quiz
25%
1
34%
2
15%
3
7%
Ничего из перечисленного
19%
Посмотреть ответы
Видео дня. Типы данных в SQL

Ссылка на YouTube

#видео
Какой результат возвратит следующая функция в PostgreSQL:

TO_DATE ('2017:JUNE:11','YYYY:Month:DD')?
Anonymous Quiz
28%
2017-JUNE-11
19%
2017-Jun-11
22%
2017-06-11
3%
NULL
14%
Ничего из перечисленного
14%
Посмотреть ответы