SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
#Вопросы_с_собеседования

Удержание пользователей в месяц

Контекст: допустим, у нас есть статистика по авторизации пользователей на сайте в таблице logins:

| user_id | date |
|---------|------------|
| 1 | 2018-07-01 |
| 234 | 2018-07-02 |
| 3 | 2018-07-02 |
| 1 | 2018-07-02 |
| ... | ... |
| 234 | 2018-10-04 |

Задача: написать запрос, который получает количество удержанных пользователей в месяц. В нашем случае данный параметр определяется как количество пользователей, которые авторизовались в системе и в этом, и в предыдущем месяце.

Решение:

SELECT
DATE_TRUNC('month', a.date) month_timestamp,
COUNT(DISTINCT a.user_id) retained_users
FROM
logins a
JOIN
logins b ON a.user_id = b.user_id
AND DATE_TRUNC('month', a.date) = DATE_TRUNC('month', b.date) +
interval '1 month'
GROUP BY
date_trunc('month', a.date)
👍19
#Вопросы_с_собеседования

Выберите из таблицы workers все записи так, чтобы вместо id было userId, вместо login – userLogin, вместо salary - userSalary

Ответ на картинке.
👍11
👍14🔥1
Как откатить часть транзакции внутри функции или процедуры?

BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint; --rollback previous command
INSERT INTO table1 VALUES (3);
COMMIT;


Внутри функции или процедуры код выше завершится с ошибкой, например в is_sql.sql. Но вы можете откатить часть SQL команд в транзакции через подтранзакции:

DO $TEST$
BEGIN
-- here you can write DDL commands, for example, adding or deleting a table or its section
-- and/or
-- here you can write DML commands that modify data in tables and, thus, check the operation of triggers

-- rollback all test queries
raise exception using errcode = 'query_canceled';

EXCEPTION WHEN query_canceled THEN
--don't do anything
END
$TEST$;
👍7🔥3
Узнаем вместимость БД

Этот запрос определяет размер базы данных в мегабайтах путем вычисления суммарного количества страниц, выделенных для базы данных и вычисления размера в мегабайтах. Результат будет показан в столбце MB.
👍12
#Вопросы_с_собеседования

Объясните различные типы нормализации

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

Первая нормальная форма (1NF) — нет повторяющихся групп в строках
Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
👍11
#Вопросы_с_собеседования

Удалите из таблицы table1 поле age

Ответ на картинке.
👍12🔥1
Какое ключевое слово нельзя использовать вместе с оператором ROLLUP?
Anonymous Quiz
23%
LIMIT
16%
GROUP BY
14%
ORDER BY
21%
HAVING
26%
Посмотреть ответы
🔥4👍3
Задача

Каким образом можно сократить количество взятых строк из таблицы Jobs, чтобы при выборе значений брались все значения из первой таблицы и только 10 значений из второй?

Решения
Вариант 1:

select *
from hr.job_history jh
left join (
select *
from hr.jobs jb
order by job_id
fetch first 10 rows only) jb on jb.job_id = jh.job_id


Вариант 2:

SELECT *
FROM HR.JOB_HISTORY JH
LEFT JOIN ( SELECT *,
ROW_NUMBER() OVER (PARTITION BY JB.job_id
ORDER BY JB.id -- обязательна уникальная сортировка
) rownum
FROM HR.JOBS JB ) JBS
ON JH.job_id = JBS.job_id
WHERE JBS.rownum < 10;
👍7🔥1
#Вопросы_с_собеседования

Получите SQL запросом все возрасты без дублирования

Ответ картинке.
👍8
Создание базы данных для маркетплейса с помощью SQL

В этой статье мы разработаем БД для практики. В этом проекте перед вами стоит задача создать реляционную базу данных для веб-сайта, предлагающего продажу подержанных автомобилей.

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

Читать дальше
👍7🔥2
Python_plus_MySQL-Database.pdf
123.5 KB
🖥 Полезная шпаргалка по связке Python + MySQL

Создание БД и таблиц
Внесение, чтение, обновление и удаление данных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Можно ли упростить приведенный запрос с UNION? Если да, то как?
SELECT id, prod_id, price FROM goods WHERE price <= 5 UNION SELECT id, prod_id, price FROM goods WHERE id IN (100,104)
Anonymous Quiz
24%
SELECT id, prod_id, price FROM goods WHERE price = 5 AND id IN (100,104)
8%
SELECT id, prod_id, price FROM goods WHERE price = 5 !AND id IN (100,104)
23%
SELECT id, prod_id, price FROM goods WHERE price = 5 OR id IN (100,104)
7%
Упростить нельзя
28%
Нет верного варианта ответа
11%
Посмотреть ответ
😱8👍5🔥1
DROP COLUMN

Чтобы удалить определенный столбец из таблицы, мы сделаем следующее.
👍8
SQL — Числовые функции. Подробная шпаргалка.

Смотреть
👍8
В реляционных базах данных данные хранятся в таблицах, которые являются
Anonymous Quiz
20%
одномерными
52%
двумерными
2%
трехмерными
26%
любыми из перечисленных выше
👍9
#Вопросы_с_собеседования

Переименуйте таблицу table2 в table3

Ответ на картинке.
👍11🔥3
Window_Functions_Cheat_Sheet_Ledger.pdf
166.1 KB
Полезная шпаргалка по оконным функциям SQL
👍9🔥1
#Вопросы_с_собеседования

При выборке из таблицы workers прибавьте к дате 1 день, 2 часа, 3 минуты, 5 секунд

Ответ на картинке.
👍7
LIKE

Оператор LIKE используется в WHERE, чтобы задать шаблон поиска похожего значения.

Есть два свободных оператора, которые используются в LIKE:

• % (ни одного, один или несколько символов);
• _ (один символ).

Рассмотрим пример
Выведем список курсов, в имени которых содержится «to», и список курсов, название которых начинается с «CS-».
👍131