Сеня рядом и Белла пришел. Былое
SQL: ROW_NUMBER(), RANK(), DENSE_RANK()
При запросах к БД через SQL часто бывает нужно ранжировать строки таблицы по какому-либо значению и потом, например применять фильтр. Для этого очень удобно использовать функции с окнами: ROW_NUMBER(), RANK(), DENSE_RANK(). Как использовать смотрим в Jupyter Notebook на тестовой БД SQLite. Открываем ноутбук, пишем: import pandas as pd
import sqlite3
from contextlib import contextmanager
from IPython.display import display data = pd.DataFrame({ 'student': ['Жек Воробьёв', 'Жек Воробьёв', 'Жек Воробьёв',...
Выбор максимального значения по группам (SQL)
Допустим, у нас стоит задача («фактуру» беру от фонаря, чисто чтоб под иллюстрацию решений канало): есть у нас, к примеру, таблица учеников (Students), в ней, помимо прочего, есть такие поля, как ФИО (Name), класс (ClassId) и показатель успеваемости (Performance). Нам надо (ну, скажем, для доски почёта) выбрать учеников с наилучшей успеваемостью по каждому классу. Запущено всё это на MS SQL Server. Так вот. Есть решение очевидное (для нахватавшегося SQL по верхам) и есть решение правильное (для умеющего в хитрозадые особенности). Очевидное решение (для тех, кто дальше джойнов не зашёл): скрестить...