TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
Собесный воин | Дата Аналитика

14 May, 15:44

Открыть в Telegram Поделиться Пожаловаться

Prev Next
А НАПИШИ КА МНЕ ОКОНКУ, НО БЕЗ ИСПОЛЬЗОВАНИЯ ОКОНОК

Звучит как шиза, но это реальная задача, которая нередко встречается на интервью😁

Представьте, вам дают входную таблицу с баллами студентов (скрин 1) и вам нужно получить таблицу с их рангами по этим баллам (скрин 2)

Ну казалось бы, напишу просто:
SELECT Имя, Результат, row_number() over(order by Результат desc) as Ранг
from table
А интервьювер говорит, давай без оконок)

Вообще очень часто, когда задание выглядит как какая-то чушь, помогает такой интуитивно неочевидный прием, как джоин таблицы самой на себя

Мы можем для начала сделать cross join таблицы саму на себя, тогда напротив каждого студента мы получим оценки других студентов (в том числе его самого), например:

a.Имя | a.Результат | b.Имя | b.Результат
Дмитрий | 10 | Дмитрий | 10
Дмитрий | 10 | Виктор | 11
Дмитрий | 10 | Олег | 7
Дмитрий | 10 | Николай | 9
и т.д.

Теперь нужно заметить, что по сути ранг студента - это просто кол-во студентов, у которых ранг больше или равен чем у него

Например у Владимира нет ни одного студента, имеющего больший ранг чем у него, поэтому у него это кол-во равно 1 (т.е. только он сам). А у Павла есть студент, набравший больший балл чем он (Владимир), поэтому это кол-во равно 2 (Владимир+он сам)

Итоговый запрос получается таким:
SELECT a.Имя, a.Результат, COUNT(*) as Ранг
FROM table a
CROSS JOIN table b
WHERE b.Результат >= a.Результат
GROUP BY a.Имя, a.Результат

Если что-то было непонятно, пиши в комментарии👇

252 0 2 12
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot