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
Задача

Выберете данные из таблицы users по полям name и age, где age принимает самое маленькое значение.

Ответ на картинке.
👍13😱21
Какое ключевое слово нельзя использовать вместе с оператором ROLLUP?
Anonymous Quiz
21%
LIMIT
13%
GROUP BY
11%
ORDER BY
22%
HAVING
33%
Посмотреть ответ
👍102😱1
#Вопросы_с_собеседования

Добавьте в таблицу table1 поле status

Ответ на картинке.
👍72🔥2
Для сортировки по возрастанию используется следующая конструкция:
Anonymous Quiz
8%
GROUP BY имя_поля DESC
70%
ORDER BY имя_поля ASC
17%
ORDER BY имя_поля DESC
5%
GROUP BY имя_поля ASC
👍12🔥1
#Вопросы_с_собеседования

При выборке из таблицы workers создайте новое поле res, в котором будет строка 'eee'.

Ответ на картинке.
👍7
Запрос, возвращающий все значения из таблицы «Countries», за исключением страны с ID=8, имеет вид
Anonymous Quiz
5%
SELECT * FROM Countries EXP ID=8
7%
SELECT * FROM Countries EXPEPT ID=8
83%
SELECT * FROM Countries WHERE ID !=8
5%
Нет верного ответа
👍10
🐣 Курс по SQL для начинающих

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

1. Введение в PostgreSQL — [2:06:30]
2. Базовые SELECT запросы — [1:58:17]
3. Соединения (JOIN) — [1:07:31]
4. Подзапросы в SQL — [47:12]
5. DDL: создание БД, таблиц и их модификация — [1:50:44]
👍9🔥4
#Вопросы_с_собеседования

Даны две таблицы: таблица category с полями id и name и таблица page с полями id, name и category_id. Достаньте одним запросом все страницы вместе с их категориями

Ответ на картинке.
👍12
Извлекаем имя из адреса электронной почты

Где "YourTable" - это название вашей таблицы, содержащей столбец с адресами электронной почты.

Этот запрос использует функцию "LEFT", чтобы извлечь часть строки до символа "@", а функция "CHARINDEX" используется для нахождения позиции символа "@". Результат запроса будет содержать столбец с именами, извлеченными из адресов электронной почты.
👍9
Как полностью очистить таблицу sql

Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE. Мы указываем имя таблицы, но опускаем блок WHERE. Тогда удаляются абсолютно все записи, вне зависимости от условий.

DELETE FROM wiped_table_name;
-- Мы очистили таблицу wiped_table_name


Кроме DELETE без условий можно использовать TRUNCATE. У неё есть свои особенности. Самая главная, она быстрее DELETE, так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.

TRUNCATE cars, cups, parrots;
-- Тут можно перечислять сколько угодно таблиц
🔥4
Организация хранения исторических данных в Oracle

Сегодня поговорим о разных способах организации хранения исторических данных в Oracle.

Смотреть статью
👍4
#Вопросы_с_собеседования

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

Контекст: допустим, у нас есть статистика по авторизации пользователей на сайте в таблице 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