sfd
SQL, еще раз про оконные функции
Элементарный пример... Многие из нас используют group by. До знакомства с оконными функциями, стыдно признаться, что моим лучшим решением было выполнить самосоединение для извлечения исходного значения. Я и не подозревал, что этот метод очень неэффективен и неэффектен. Однако, выполнив group by, мы получим только одно значение в ответ. Во многих случаях мы хотели видеть исходное значение рядом с агрегированным значением, чтобы провести некоторое сравнение. Какова наилучшая практика для достижения этого? Гораздо лучший способ решить эту проблему - использовать оконную функцию...
Выбор максимального значения по группам (SQL)
Допустим, у нас стоит задача («фактуру» беру от фонаря, чисто чтоб под иллюстрацию решений канало): есть у нас, к примеру, таблица учеников (Students), в ней, помимо прочего, есть такие поля, как ФИО (Name), класс (ClassId) и показатель успеваемости (Performance). Нам надо (ну, скажем, для доски почёта) выбрать учеников с наилучшей успеваемостью по каждому классу. Запущено всё это на MS SQL Server. Так вот. Есть решение очевидное (для нахватавшегося SQL по верхам) и есть решение правильное (для умеющего в хитрозадые особенности). Очевидное решение (для тех, кто дальше джойнов не зашёл): скрестить...