Created
October 27, 2025 12:13
-
-
Save MikyPo/ad25f842f5a3446581f74f4b6e06767a to your computer and use it in GitHub Desktop.
Синтаксис SQL запросов в Jupyter Notebook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Developed by MikyPo | |
| # More code for DA here: https://dzen.ru/mikypo | |
| # Импорт нужных библиотек | |
| import duckdb | |
| import pandas as pd | |
| import numpy as np | |
| # Для вывода подсвеченного кода SQL | |
| from rich.console import Console | |
| from rich.syntax import Syntax | |
| console = Console() | |
| # Создаем в VRAM БД | |
| conn = duckdb.connect(database=':memory:') | |
| # Функция для запросов в БД | |
| def conn_fn(query_str): | |
| conn.execute(query_str); | |
| # Создаем таблицы в базе данных | |
| query_str = """create table employees ( | |
| id integer primary key, | |
| name varchar(50), | |
| city varchar(50), | |
| department varchar(50), | |
| salary integer);""" | |
| conn_fn(query_str) | |
| query_str = """insert into employees | |
| (id, name, city, department, salary) | |
| values | |
| (24, 'Marina_M', 'Moscow', 'it', 104), | |
| (21, 'Elena_E', 'Samara', 'it', 84), | |
| (22, 'Xenia_X', 'Moscow', 'it', 90), | |
| (25, 'Ivamdam_I', 'Moscow', 'it', 120), | |
| (23, 'Leonid_L', 'Samara', 'it', 104), | |
| (11, 'Daria_D', 'Samara', 'hr', 70), | |
| (12, 'Boris_B', 'Samara', 'hr', 78), | |
| (31, 'Veronika_V', 'Moscow', 'sales', 96), | |
| (33, 'Anna_A', 'Moscow', 'sales', 100), | |
| (32, 'Gregory_G', 'Samara', 'sales', 96);""" | |
| conn_fn(query_str) | |
| query_str = """create table expenses ( | |
| year integer, | |
| month integer, | |
| income integer, | |
| expense integer | |
| );""" | |
| conn_fn(query_str) | |
| query_str = """insert into expenses | |
| (year, month, income, expense) | |
| values | |
| (2020, 1, 94, 82), | |
| (2020, 2, 94, 75), | |
| (2020, 3, 94, 104), | |
| (2020, 4, 100, 94), | |
| (2020, 5, 100, 99), | |
| (2020, 6, 100, 105), | |
| (2020, 7, 100, 95), | |
| (2020, 8, 100, 110), | |
| (2020, 9, 104, 104), | |
| (2020, 10, 104, 100), | |
| (2020, 11, 104, 98), | |
| (2020, 12, 104, 106);""" | |
| conn_fn(query_str) | |
| # 🎨Функция для запросов в БД и подсветки синтаксиса SQL | |
| def query_fn(query_str): | |
| # Подсветка SQL | |
| syntax = Syntax(query_str, "sql", theme="monokai", line_numbers=True, indent_guides=True) | |
| console.print(syntax) | |
| # Выполнение и вывод результат запроса | |
| display(conn.execute(query_str).df()) | |
| # 💡Дополнительные настройки Syntax | |
| syntax = Syntax( | |
| query_str, # Передаваемая строка | |
| "sql", # Указание языка для подсветки | |
| theme="monokai", # Схема подсветки | |
| line_numbers=True, # Номера строк | |
| start_line=1, # Начальный номер строки | |
| highlight_lines={2, 4}, # Подсветка конкретных строк | |
| line_range=(1, 10), # Показать только строки 1-10 | |
| indent_guides=True, # Направляющие отступов | |
| word_wrap=True, # Перенос строк | |
| background_color="default" # Цвет фона | |
| ) | |
| # 🧐Проверка данных в БД | |
| # Таблица employees | |
| query_str = """SELECT * FROM employees""" | |
| query_fn(query_str) | |
| # Таблица expenses | |
| query_str = """SELECT * FROM expenses""" | |
| query_fn(query_str) | |
| # Ранжирование по зарплате. Первые 3 зарплаты в топе | |
| query_str = """WITH rank_empl AS(SELECT name, department, salary, | |
| DENSE_RANK() OVER (ORDER BY salary DESC) AS rank | |
| FROM employees), | |
| min_rank AS (SELECT MIN(rank) + 2 FROM rank_empl) | |
| SELECT * | |
| FROM rank_empl | |
| WHERE rank <= (SELECT * FROM min_rank)""" | |
| query_fn(query_str) | |
| # Показываем все таблицы | |
| query_str = "SHOW TABLES;" | |
| query_fn(query_str) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment