Skip to content

Instantly share code, notes, and snippets.

@MikyPo
Created October 27, 2025 12:13
Show Gist options
  • Select an option

  • Save MikyPo/ad25f842f5a3446581f74f4b6e06767a to your computer and use it in GitHub Desktop.

Select an option

Save MikyPo/ad25f842f5a3446581f74f4b6e06767a to your computer and use it in GitHub Desktop.
Синтаксис SQL запросов в Jupyter Notebook
# 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