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
Трюк дня. Получить id покупки с максимальной value для каждого customer.

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

id customer value
1 Alex 5
2 Sam 1
3 Sam 3

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

id customer value
1 Alex 5
3 Sam 3

В PostgreSQL можно использовать оператор DISTINCT ON:

SELECT
DISTINCT ON(customer)
id,
customer,
value
FROM table
ORDER BY customer, value
DESC, id

#tips
А какие варианты решения вы знаете?
Какой оператор нужно вставить вместо [?], чтобы обновить всю колонку city в таблице customers?
Anonymous Quiz
36%
WHERE
7%
ON
52%
SET
1%
ошибка
5%
ничего из перечисленного
Трюк дня. Найти записи с граничными значениями без соединения таблицы на саму себя

Один из вариантов - это сначала найти максимальное значение для каждого ID с помощью GROUP BY, и затем соединить таблицу с самой собой по ID и max значению.
Но есть способ лучше:

SELECT
dat2.*
FROM
(
SELECT
dat.*,
CASE WHEN (num = MAX(num) OVER (PARTITION BY id)) THEN 'y' ELSE 'n' END AS max_num
FROM current_table dat
) dat2
WHERE max_num = 'y'

#tips
👍1
Всем привет, дорогие SQL разработчики и те, кто хочет ими стать.
Я стартовала этот канал для того, чтобы помочь начинающим айтишникам разобраться с SQL и его нюансами.
В планах у нас разбор задач, полезные видео, трюки языка и многое другое.

Хотелось бы от вас услышать, чего вам не хватает в других телеграм каналах по SQL и что я бы могла сделать уникального. Напишите, пожалуйста, в комментариях под этим постом.
Tips & Tricks. Производительность запросов в SQL Server: ошибка #1. Использование OR внутри оператора JOIN или WHERE для нескольких столбцов

В серии статей по SQL Server разбираем типичные ошибки, приводящие к снижению производительности, и способы их исправить.

#sql

Читать статью
👍1
Сколько строк будет в результате выполнения PostgreSQL кода выше?
Anonymous Quiz
25%
1
20%
2
9%
3
18%
Ошибка
27%
Ничего из перечисленного
Видео дня. Регулярные выражения. Regex за 20 минут!

Ссылка на YouTube

#видео
Какое выражение используется для получения различных значений?
Anonymous Quiz
15%
SELECT UNIQUE
51%
SELECT DISTINCT
27%
SELECT DIFFERENT
2%
SELECT MAX
6%
Посмотреть ответы
#вопрос2

Напишите запрос для получения количества полных месяцев (результат должен быть INTEGER) между двумя TIMESTAMPS: date1 и date2.

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

 ABS (TIMESTAMPDIFF (MONTH, date1, date2));

TIMESTAMPDIFF возвращает разницу date2 - date1 в полных месяцах. Поэтому, например,
 (MONTH, '2022-01-05 00:00:00',
'2022-05-07 00:00:00') = 4,
а
 (MONTH, '2022-01-05 00:00:00',
'2022-05-04 00:00:00') = 3.

Функция ABS возвращает модуль числа, то есть преобразует число из отрицательного в положительное. Охватывает те случаи, когда date1 > date2.

#вопросы #собеседование
Tips & Tricks. Производительность запросов в SQL Server: ошибка #2. Поиск строк с подстановкой (wildcard)

В серии статей по SQL Server разбираем типичные ошибки, приводящие к снижению производительности, и способы их исправить.

#sql

Читать статью
Трюк дня. Игнорирование одиночной кавычки в SQL Server.

Рассмотрим ситуацию, когда в таблицу требуется вставить текст, содержащий одиночную кавычку, например: It‘s Friday today.

Запрос
INSERT INTO table VALUES (‘It’s Friday today.’) выдаст ошибку.

Решение #1: продублировать одиночную кавычку в тексте:

INSERT INTO table VALUES (‘It’’s Friday today.’)

Решение #2: использовать char(39):

INSERT INTO table VALUES (‘It’ + char (39) + ’s Friday today.’)

А какие еще решения данной задачи вы знаете?

#tips