TGViewer
Channel Public Channel
Data Science. SQL hub

Data Science. SQL hub

@sqlhub

По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo

#VRHSZ
Subscribers
36K
Photos
1.2K
Videos
99
Links
1.2K

Showing posts older than #723 · Back to latest

Older Posts 16 shown
Post #721 4.24K
Уроки по T-SQL

1. Быстро и подробно об основах реляционных баз данных
2. Знакомимся с основными понятиями Transact SQL
3. Работа с временными таблицами: CREATE TABLE, DROPE TABLE, ALTER TABLE
4. Быстрый разбор выборки данных в T-SQL
5. Внесение изменений в базу данных T-SQL
6. Оператор Union за 5 мин T-SQL
7. Оператор CASE за 2 мин T-SQL

#video #sql

📌Видео

@Sqlhub
  • 👍 4
  • 🔥 4
  • ❤ 1
Post #719 4.33K
Сегодня вышла новая версию ElectricSQL.

ElectricSQL - это опенсорс платформа для локальной разработки, позволяющая легко создавать высококачественные современные приложения с мгновенной реактивностью, многопользовательской совместной работой в реальном времени и бесконфликтной поддержкой автономной работы.

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

• Github
• Документация

@Sqlhub
  • 👍 11
  • ❤ 3
  • 🔥 1
Post #715 4.29K
🖥 Предположим, что нам необходимо получить данные о сотруднике, имеющем вторую по величине зарплату в компании. Мы можем использовать следующий запрос:

WITH employee_ranking AS (
SELECT
employee_id,
last_name,
first_name,
salary,
RANK() OVER (ORDER BY salary DESC) as ranking
FROM employee
)
SELECT
employee_id,
last_name,
first_name,
salary
FROM employee_ranking
WHERE ranking = 2

Условие WHERE ranking = 2 используется для фильтрации строк второй по величине зарплаты. Обратите внимание, что на позиции 2 может находиться более одного сотрудника, если у них одинаковая зарплата.

На данном этапе важно понять поведение функции RANK(), а также других доступных функций, таких как ROW_NUMBER() и DENSE_RANK(). Эта тема подробно рассматривается в статье - "Обзор функций ранжирования в SQL". Я рекомендую прочитать эту статью, если вам придется работать с различными видами ранжирования.

@sqlhub
  • 👍 11
  • ❤ 6
  • 🔥 4
Post #712 3.91K
Использование рекурсивных запросов для управления иерархиями данных

Некоторые таблицы в SQL могут иметь неявный вид иерархии данных. Например, в нашей таблице сотрудников для каждого сотрудника имеется идентификатор manager_id. У нас есть менеджер, который отвечает за других менеджеров, которые, в свою очередь, отвечают за других сотрудников, и так далее.

При такой организации мы можем иметь иерархию различных уровней. В каждой строке столбец manager_id относится к строке, находящейся на непосредственном верхнем уровне иерархии. В таких случаях хорошим запросом является получение списка всех сотрудников, подчиняющихся генеральному директору компании (который в данном случае имеет идентификатор employee_id, равный 110). Для этого используем следующий запрос

WITH RECURSIVE subordinate AS (
SELECT
employee_id,
first_name,
last_name,
manager_id
FROM employee
WHERE employee_id = 110 -- id of the top hierarchy employee (CEO)

UNION ALL

SELECT
e.employee_id,
e.first_name,
e.last_name,
e.manager_id
FROM employee e
JOIN subordinate s
ON e.manager_id = s.employee_id
)
SELECT
employee_id,
first_name,
last_name,
manager_id
FROM subordinate ;


В этом запросе мы создали рекурсивный CTE под названием subordinate. Он является ключевой частью запроса, поскольку проходит по иерархии данных, переходя от одной строки к строкам иерархии, расположенным непосредственно под ней.

Есть два подзапроса, соединенных между собой UNION ALL; первый подзапрос возвращает верхнюю строку иерархии, а второй запрос возвращает следующий уровень, добавляя эти строки к промежуточному результату запроса. Затем снова выполняется второй подзапрос, возвращающий следующий уровень, который снова добавляется к промежуточному результату. Этот процесс повторяется до тех пор, пока в промежуточный результат не будет добавлено ни одной новой строки. Наконец, главный запрос возвращает данные в том виде, в котором мы ожидаем.

@sqlhub
  • 👍 19
  • 🔥 3
  • ❤ 2
Post #708 3.96K
🖥StereoDB

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

StereoDB поддерживает создание Stateful Services (API или ETL Worker), которые хранят все данные в памяти и могут обеспечить миллионы запросов в секунду для RPS с одного узла.

• Github

@sqlhub
  • 👍 14
  • ❤ 2
  • 🔥 1
Post #707 4.64K

Forwarded from Just Xor

🔥 Дайджест полезных материалов из мира SQL за неделю

Почитать:
— Искусство ETL. FAQ по Data Cooker ETL
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Clickhouse — непростая жизнь в продакшене
— MySQL в Google Colab: Бесшовная интеграция
— Искусство ETL. Пишем собственный движок SQL на Spark [часть 5 из 5]
— Bamboolib : Инструментарий для интеллектуального исследования и анализа данных
— 7 шагов по контейнеризации Python-приложений
— Understanding Joins in SQL
— My Experience learning Python and SQL
— SQL 50–1683. Invalid Tweets
— Tudo que você precisa saber sobre SQL
— Select transactions
— Temp table in SQL Server
— Memory behind Postgres
— Discover the Hidden Powers of PostgreSQL: Lateral Joins and JSON Columns Decoded!
— Bitmap Scan in YugabyteDB
— SQL 50–1148. Article Views I

Посмотреть:
🌐 Вся база SQL для начинающих за 1 час
🌐 SQL For Web Developers - Complete Database Course
🌐 Python Matplotlib. Визуализация данных на PRO уровне. (⏱ 24:43)
🌐 Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior. (⏱ 20:28)
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 Как защитить телеграм бота от атак и перегрузок. (⏱ 08:29)

Хорошего дня!

@sqlhub
  • 👍 13
  • 🔥 3
  • ❤ 2
Post #705 4.67K
🖥 SQL-запросы, которые вы рано или поздно погуглите, часть 2

На сей раз я использую таблицу subject_selection, которая описывает изучаемые студентами предметы:

|student_id|subject|semester|student_name|
|----------|-------|--------|------------|
|eb1490a6 |Физика |2 |Иван |
|1c5bf433 |Физика |4 |Андрей |
|b16a764b |Тервер |1 |Ирина |
|48b3a7f6 |Матстат|2 |Мария |
|c179c5cc |Тервер |2 |Сергей |
|6306ceed |Матстат|1 |Инна |
|5853f444 |Иняз |3 |Эрик |
|… |… |… |… |
|550ca6a5 |Тервер |2 |Елена |



Запросы исполнены на диалекте BigQuery.

WHERE + LIKE: найти все таблицы с определенным столбцом
Допустим, администратор университетской базы данных управляет большим хранилищем и уже не тратит усилия на запоминания всех структур таблиц. Он хочет вспомнить, в каких наборах упоминались студенты.

Во многих СУБД на базе SQL существует information_schema с метаданными, к которой можно обращаться с запросами. Вот так, к примеру, она выглядит в BigQuery (документация): *в изображении.

Вы также можете обратиться к:

▪️резервной копии таблицы (TABLE_SNAPSHOT);
▪️перечню запросов, выполненных определенным сотрудником (JOBS_BY_USER);
▪️частоте использования расшаренных датасетов (SHARED_DATASET_USAGE).

Чтобы получить искомый список таблиц, содержащими столбец с подстрокой ‘student’, нужно запустить такую команду:

SELECT * FROM `project.tutorials.INFORMATION_SCHEMA.COLUMNS`
WHERE column_name LIKE '%student%'


В результате мы получим список с 20+ параметрами. Располагая также данными о типе столбца, возможности пропусков в нем и прочих интересных настройках вы сможете управлять своими данными на новом уровне: ведь по любому из полей можно производить фильтрацию, модификацию и проч.

📌 Читать весь разбор

@sqlhub
  • ❤ 7
  • 👍 5
  • 🔥 1
Post #699 4.99K
🖥 SQL Translator - это инструмент для преобразования запросов на естественном языке в SQL-запросы с помощью искусственного интеллекта. Этот проект является 100% бесплатным и с открытым исходным кодом.

git clone https://github.com/whoiskatrin/sql-translator.git

▪Github
▪Проект

@sqlhub
  • 👍 23
  • ❤ 3
  • 🔥 2
Post #697 4.29K
🚀 Бесплатный курс. Специализация Data Science Fundamentals with Python and SQL

Создайте основу для своей карьеры в области Data Science. Получите практический опыт работы с Jupyter, Python, SQL. Выполнять статистический анализ на реальных массивах данных.

• Курс

@sqlhub
  • 👍 11
  • ❤ 4
  • 🔥 1
Post #696 4.44K
🖥 SQL-запросы, которые вы рано или поздно погуглите

Отвечу на вопросы, которые возникают у новичков в SQL, в частности в PostgreSQL и BigQuery. Мы не будем обсуждать совсем базовые SELECT, CREATE или DROP.

Для удобства восприятия будем использовать тестовые данные. Первая таблица players содержит данные о пользователях и дате установки мобильной игры:

|playerId|name |installationDate|game |os |
|--------|----------------|----------------|----------|----------|
|9e8a0174|Трофимова Алёна |2023-07-30 |basketball|iOS 16 |
|3e2e04ad|Семенова Алиса |2022-07-21 |consumer |iOS 13 |
|642eafb2|Абрамова Диана |2022-06-06 |curtain |iOS 15 |
|8c231f49|Ефимова Ульяна |2022-06-21 |conductor |Android 12|
|a085caf1|Захаров Михаил |2023-04-11 |appear |Android 11|
|c4deb869|Николаева Марта |2022-03-31 |possible |iOS 11 |


вторая, levels, — даты прохождения игроком с определенным ID того или иного уровня:

|playerId|level|completionDate|
|--------|-----|--------------|
|7b50274d|6 |2023-05-17 |
|b0c9a9da|20 |2022-02-19 |
|09b3d5b5|15 |2022-07-22 |
|52b3bfa9|11 |2022-02-18 |
|3e2e04ad|17 |2022-08-17 |
|642eafb2|17 |2022-04-14 |
|8c231f49|20 |2022-05-30 |
|a085caf1|20 |2023-02-24 |
|36545ec1|16 |2022-08-10 |
|44e9653f|3 |2023-06-02 |



Я буду верстать в BigQuery на таком же датасете, так что использую соответствующий диалект.


INNER JOIN
Это тип объединения по умолчанию, и он оставит наименьшее число строк. Слово INNER можно опустить:

SELECT
p.playerId,
installationDate,
game,
level,
completionDate
FROM `project.tutorials.players` AS p
JOIN `project.tutorials.levels` AS l ON p.playerId = l.playerId;



Посмотрим, что здесь происходит:

• В строках 1-6 мы выбираем только необходимые столбцы;
• 7-8: командой AS задаем псевдонимы таблицам;
• 8: определяем логику объединения по совпадающим playerId. Это означает также, что мы сохраним данные только об первом попавшемся уровне.

Получим всего четыре строки:
|playerId|name |installationDate|game |level|completionDate|
|--------|--------------|----------------|---------|-----|--------------|
|3e2e04ad|Семенова Алиса|2022-07-21 |consumer |17 |2022-08-17 |
|642eafb2|Абрамова Диана|2022-06-06 |curtain |17 |2022-04-14 |
|8c231f49|Ефимова Ульяна|2022-06-21 |conductor|20 |2022-05-30 |
|a085caf1|Захаров Михаил|2023-04-11 |appear |20 |2023-02-24 |


OUTER JOIN
Этот тип объединения, напротив, куда «добрее» и в случае FULL-объединения сохранит записи обо всех игроках и всех пройденных уровнях:

SELECT
p.playerId,
installationDate,
game,
level,
completionDate
FROM `project.tutorials.players` AS p
FULL OUTER JOIN `project.tutorials.levels` AS l ON p.playerId = l.playerId;



У нас появятся записи, где playerId пуст, поскольку попросили мы идентификаторы только из первой таблицы:

🔍 Читать

@sqlhub
  • 👍 14
  • 🔥 4
  • ❤ 3
Post #694 5.41K
🔥 Дайджест полезных материалов из мира SQL за неделю

Почитать:
— Проектирование БД и почему важен SQL для системного аналитика: гайд по улучшению качества требований
— Тестирование производительности на Python: Пошаговое руководство с Flask
— Искусство ETL. Пишем собственный движок SQL на Spark [часть 3 из 5]
— Вы вообще нормальн… нормализованный??
— SQL HowTo: ближайший общий предок в дереве (LCA)
— 7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы
— MSSQL: Rebuild vs Reorganize в высоконагруженных системах
— Как я писал сервер на NodeJS для базы Firebird 3.0
— Harness the Power of SQL CASE - Your Ultimate SQL CASE Statement Guide
— Transaction Internals: Fast Path vs Multi-Shard
— The cost of additional secondary indexes in PostgreSQL & YugabyteDB
— Dominando a função WITH: Criando Consultas Temporárias no SQL
— Database Review: Top Five Missing Features from Database APIs
— SQL Roadmap for Data Analysts[Step-by-Step]
— Offline auth with Electron + SQLite + React
— SQL concept for Beginners
— Implementing hassle-free audits in the SQL database
— Simple and Efficient Full Text Search using Django and Postgres

Посмотреть:
🌐 Невероятная нейросеть переводит любое видео на другие языки с сохранением оригинального голоса. (⏱ 00:55)
🌐 Python анализ данных с Pandas. PandaSQL (⏱ 12:13)
🌐 Управление жестами всегда было в ваших часах, просто его нужно было активировать. (⏱ 00:11)
🌐 Python анализ данных с Pandas. Join, merge, concat в Pandas (⏱ 19:25)
🌐 Python+SQL часть2 создание таблиц. (⏱ 05:15)
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Python анализ данных с Pandas. (⏱ 17:04)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)

Хорошего дня!

@sqlhub
  • 👍 10
  • 🔥 4
  • ❤ 1
Post #688 5.68K
🖥 3 лучших инструмента для автоматизации устранения уязвимостей SQL Injection!

1⃣ SQLMap
Вы, вероятно, уже знаете о первом инструменте.

SQLMap - самый популярный сканер уязвимостей SQL Injection, полностью открытый!

2⃣ Ghauri
Ghauri - это продвинутый инструмент, позволяющий автоматизировать обнаружение и эксплуатацию уязвимостей SQL Injection!

Ghauri также имеет открытый исходный код и доступен на GitHub!

3⃣ SQLiv
SQLiv способен найти в гугле определенную цель, просмотреть ее и просканировать несколько URL-адресов на предмет SQL-инъекций!

@sqlhub
  • 👍 8
  • ❤ 2
  • 🔥 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →