Как составить рейтинг группы

Как сделать рейтинг активности в группе ВК и отслеживать подписчиков? Стоит воспользоваться специальными приложениями, например, «Рейтинг подписчиков бесплатно» или «Пьедестал». Достаточно просто подключить их, остальное произойдет автоматически.

Что это за инструмент и зачем он нужен?

Давайте для начало скажем несколько слов, о том, что вообще такое рейтинг активности в группе ВК (и зачем он необходим). Разумеется, у каждого сообщества есть подписчики – именно ради них вы и создаете контент.

Подписчики совершают какие-то целевые действия – обычно это лайки, написание комментариев, репосты записей. Остановимся на этих трёх категориях, потому что они являются основными.

Рейтинг активности ВК, как вы уже могли догадаться, это отображение информации о том, кто из пользователей совершает больше целевых действий. В табличке отображаются имена людей, которые чаще всего писали комментарии, делали репосты, ставили лайки. Такие подписчики важны для каждого сообщества, ведь они потребляют контент – а значит, помогают продвижению группы.

Таблицы активности ВК используются не просто так. Поверьте, вашим подписчикам это понравится – каждому приятно видеть, что он занимает какое-то высокое место в рейтинге. Тем более, что это ничего не будет ему стоить! Кроме того, многие сообщества дарит какие-то подарки самым активным участником, проводят для них специальные розыгрыши, предлагают особые условия и многое другое.

Кажется, с целями и особенностями мы разобрались. Значит, можно переходить к главному вопросу – как добавить рейтинг активности в группу ВК? Об этом рассказываем во второй части обзора.

Как настроить рейтинг активности в группе?

Мы расскажем о двух самых простых приложениях, позволяющих настроить рейтинг активности в группе ВК бесплатно. Разумеется, подобных сервисов гораздо больше (обратите внимание, что некоторые из них могут быть платными.). Многие из них обладают куда более широким функционалом и позволяют пользоваться разными игровыми механиками – это привлекает значительное количество новых подписчиков, стимулирует активность текущих участников сообщества. Впрочем, вместо того чтобы читать об этом, оцените их на практике!

Итак, поговорим о том, как настроить рейтинг активности в ВК через бесплатное приложение https://vk.com/app7500976. Виджет устанавливается в один клик!

Разработчики действительно не врут, достаточно нажать на кнопку «Добавить в сообщество», чтобы виджет начал работать. Если у вас несколько групп, необходимо выбрать нужное название списка.

Ничего отдельно настраивать и подключать не нужно, работающий сервис сделает все за вас. Программа автоматически посчитает баллы за целевые действия, затем составит таблицу подписчиков с указанием конкретного места в рейтинге, количества лайков и комментариев, а также количества баллов.

Повторимся, вам не нужно ничего считать вручную. Сервис самостоятельно начисляет участникам баллы, суммирует их и выводит в таблицу.

Теперь о том, как сделать рейтинг активности в ВК через приложение «Пьедестал». Найти его можно здесь – https://vk.com/app7147757. Никаких глобальных отличий в подключении и настройке нет. Переходите по ссылке, нажимайте на кнопку «Подключить к сообществу» и выбирайте нужную группу, если у вас их несколько.

Что отличает приложение «Пьедестал»? Рейтинг обновляется каждые полчаса, последнее время/дата обновления видны на верхней панели – вы точно получаете самую актуальную информацию. В таблице выводятся следующие данные: имена пользователей, количество заработанных баллов, место в рейтинге.

Вы можете сами назначать, сколько баллов будет начисляться за той или иное целевое действие: например, один – за лайк и репост, два – за комментарий. Разумеется, самому считать ничего не нужно. Сервис «запомнит» вашу шкалу оценивания и будет начислять и суммировать бонусы, которые затем выведут пользователей на какие-то призовые места.

Рассказали, как поставить рейтинг активности в группе ВК – кажется, что нет ничего проще! Но несмотря на кажущуюся простоту, вы получаете доступ к огромному количеству полезных функций, которые помогут в продвижении и развитии вашего сообщества.

На соревнованиях часто определяют места участников, исходя из суммы баллов за выступление. Бывает так, что разные участники набирают одинаковое количество баллов. В такой ситуации на одном месте оказывается несколько человек. В этом задании научимся определять места SQL запросом.

Проанализируем покупки клиентов. Для каждого товара найдем самую дешевую цену, по которой он продавался:

SELECT pi.product_id,
       min (pi.price) AS min_price
  FROM purchase_item pi
 GROUP BY pi.product_id
 ORDER BY min_price

Обрати внимание на строки 5 и 6. Товары продавались по одной цене.

Попробуем ввести рейтинг самых дешевых товаров. Воспользуемся функцией row_number() для проставления номеров в рейтинге:

SELECT pi.product_id,
       row_number () over (order by min (pi.price)) AS position,
       min (pi.price) AS min_price
  FROM purchase_item pi
 GROUP BY pi.product_id
 ORDER BY min_price

Смотрим на строки 5 и 6

Так дело не пойдет. Чем продукт 2 хуже продукта 3? У них должно быть одинаковое место в рейтинге.

В SQL есть специальная функция ранжирования, которая проставит одинаковое место (ранг) для продуктов с одинаковой стоимостью. Она называется rank.

Заменим row_number() на rank() и посмотрим на результат:

SELECT pi.product_id,
       rank () over (order by min (pi.price)) AS position,
       min (pi.price) AS min_price
  FROM purchase_item pi
 GROUP BY pi.product_id
 ORDER BY min_price

Продукты 2 и 3 теперь занимают одинаковую позицию в рейтинге.

Обрати внимание, что после 5 позиции в рейтинге сразу идет 7-я, т.к. на пятом месте располагаются два товара.

Содержание

  1. Студенческий рейтинг
  2. Что такое рейтинг?
  3. Виды рейтингов
  4. Зачем он определяется?
  5. Как рассчитывается рейтинг?
  6. Когда готовятся рейтинги?
  7. Как я могу увидеть свою позицию в рейтинге?
  8. На что влияет мое место в рейтинге?
  9. Популярные группы в “ВКонтакте”
  10. Что такое сообщества «ВКонтакте»
  11. Рейтинг групп
  12. Для чего нужна популярность группы
  13. Критерии популярности группы
  14. Секреты интересных групп
  15. Напишите мне пожалуйста что означают на Фикбуке рейтинги «G», «PG-13», «R», «NC-17», «NC-21»?

Студенческий рейтинг

Что такое рейтинг?

Все студенты Вышки получают возможность два раза в год «найти свое место» среди других студентов своего курса своей образовательной программы.

Рейтинг — отсортированный список студентов, демонстрирующий успехи в освоении дисциплин из учебного плана, за определенный период.

Виды рейтингов

В Вышке принято различать текущие и кумулятивные рейтинги. Мы выделяем рейтинг до пересдач и рейтинг после пересдач.

Текущий рейтинг позволяет сравнить образовательные результаты студентов, полученные ими в течение полугодия (два учебных модуля или один семестр). Это оперативный показатель вашей успеваемости. Он каждый раз новый и в него включаются результаты по дисциплинам последнего полугодия (их, как правило, 5-8).

Кумулятивный рейтинг сравнивает учебные достижения студентов в течение всего времени обучения в Вышке. Это накопительный показатель. В кумулятивный рейтинг два раза в год добавляются новые дисциплины к списку тех, которые изучал студент с самого первого курса. Перед выпуском у студентов в кумулятивном рейтинге будут результаты по всем элементам учебного плана: дисциплинам, курсовым работам, проектам и пр. (их у бакалавров не меньше 30, у магистров не меньше 12).

Рейтинг до пересдач (текущий и кумулятивный) учитывает оценки студентов так, как они были выставлены во время сессий указанного периода. Для студентов, не явившихся на экзамен, либо получивших неудовлетворительные оценки — учитываются нули за соответствующие элементы учебного плана.

Рейтинг после пересдач рассчитывается с оценками, полученными на пересдачах.

Зачем он определяется?

Рейтинговая система повышает мотивацию студентов к активному и равномерному освоению образовательных программ.

Рейтинг позволяет получить дифференцированную и разностороннюю информацию о качестве и результативности обучения, а также о персональных учебных достижениях студентов, в том числе, для принятия управленческих решений

Как рассчитывается рейтинг?

Рейтинг определяется следующим образом:

  1. Каждый факультет принимает решение какие студенты будут друг с другом сравниваться. Возможно сравнение студентов одного курса одной образовательной программы, либо нескольких образовательных программ
  2. Для каждого студента определяется сумма произведений оценок на кредитный вес элемента учебного плана. Например, студент в течение полугодия изучал английский язык (4 кредита), математический анализ (5 кредитов) и историю (3 кредита). Получил по ним такие оценки: 8, 7, 10. Для этого студента рассчитывается показатель: 4*8+5*7+3*10 = 97.
  3. Так как у каждого студента Вышки учебный план индивидуальный, то, чем старше курс, тем разнообразнее набор элементов учебного плана у каждого студента. И сумма кредитов, которую студент набрал, может отличаться. Поэтому, для более точного сравнения применяется нормирование рейтинговых сумм на максимальную сумму кредитов среди всех сравниваемых студентов. Точную формулу можно посмотреть в Положении о рейтинговой системе комплексной оценки знаний студентов образовательных программ высшего образования – программ бакалавриата, программ специалитета и программ магистратуры Национального исследовательского университета «Высшая школа экономики»
  4. Весь список нормированных показателей сортируется по убыванию — чем больше показатель у студента, тем меньше его порядковый номер в списке, а значит персональный рейтинг студента лучше.

Если студент в течение полугодия выбрал дисциплин больше, чем требует учебный план образовательной программы (например взял не три, как предлагали, а четыре или пять вариативных дисциплин), то в текущий рейтинг включаются не все элементы учебного плана. Студент может сам управлять включением избыточных элементов из вариативной части плана. Нужно сообщить в учебный офис своей образовательной программы, какие именно элементы следует учесть в текущем рейтинге (письменным заявлением или по электронной почте). Результаты по курсовым работам, обязательным дисциплинам и рекомендованному количеству вариативных дисциплин включаются в текущий рейтинг.

В кумулятивный рейтинг накапливаются все результаты — и по вариативной части и по факультативам, вне зависимости от желания студента. Так как кумулятивный рейтинг фиксирует всю учебную активность, то некоторые студенты в кумулятивном рейтинге могут быть «выше» своих однокурсников, которые в текущем рейтинге в лидерах.

Рейтинговая таблица определяется на основе данных об оценках студентов, занесенных в информационную систему НИУ ВШЭ. Данные заносятся вручную силами работников учебного офиса на основе ведомостей, которые подписали преподаватели, принимавшие экзамены. Рассчитывается таблица автоматически по единым принципам для всех факультетов и филиалов НИУ ВШЭ.

Так как в этом процессе есть «ручной» участок, то вероятны технические ошибки. Поэтому рейтинговые таблицы в определенные сроки предъявляются студентам и, если студент обнаружил неточности (не те оценки, не те дисциплины) он имеет возможность в течение двух рабочих дней заявить об обнаруженной ошибке в учебный офис.

Когда готовятся рейтинги?

Рейтинговые таблицы готовятся после летней и зимней сессий, а также после периодов пересдач

Рейтинги различных видов доводятся до сведения студентов в течение текущего учебного года не позднее указанных сроков:

  • Текущий рейтинг до пересдач за 1-ое полугодие – 20 января;
  • Текущий рейтинг после пересдач за 1-ое полугодие – 05 марта;
  • Текущий рейтинг до пересдач за 2-ое полугодие – 15 июля;
  • Текущий рейтинг после пересдач за 2-ое полугодие — 25 октября;
  • Кумулятивный рейтинг – 10 марта и 30 октября.

Как я могу увидеть свою позицию в рейтинге?

Рейтинговые таблицы публикуются не позднее сроков, указанных выше, в открытом доступе на сайтах образовательных программ в разделе Студентам — Рейтинги.

Менеджеры образовательных программ дополнительно рассылают рейтинговые таблицы студентам по корпоративной электронной почте.

На что влияет мое место в рейтинге?

Рейтинговая позиция часто используется для распределения различных студенческих благ.

Студентам, которые оплачивают свое обучение, хорошее место в рейтинге может принести скидку на оплату обучения.

Место в рейтинге может повлиять на возможность записаться на популярные дисциплины по выбору, майноры, общеуниверситетские факультативы.

При принятии решения о выделении студенту гранта на академическую международную мобильность, также важную роль может сыграть ваш рейтинг.

Источник

Популярные группы в “ВКонтакте”

Телеграм-канал Программист и бизнес.
Каждый день интересные истории, как программист строит бизнес.

Группы ВК способны принести своим владельцам неплохую прибыль. Еще совсем недавно они были просто развлечением. Интернет постоянно развивается и сейчас уже давно все изменилось. Но, чтобы хорошо зарабатывать, сообщество должно стать популярным. Существует масса способов, позволяющих раскрутить группу. В данной статье рассмотрим, что представляет собой сообщество в ВК, критерии популярности и другие нюансы, позволяющие достичь успеха владельцам какой-либо группы.

Что такое сообщества «ВКонтакте»

Сообщества «ВКонтакте» являются универсальным и многофункциональным каналом, позволяющим рекламировать собственный бизнес. Также группы идеально подходят для общения с большим количеством пользователей из разных регионов и стран. Еще вы можете создать интернет-магазин, активировав «Товары». Рассмотрим, какими преимуществами и недостатками обладают группы «ВК»:

  • Пользователи могут принимать участие в создании качественного контента (по желанию эту функцию вы можете отключить). Это очень важно, если раскрутка связана с активностью целевой аудитории. Человек сможет добавлять фото, видео, комментарии. Но эта опция может быть не только плюсом, но и минусом, ведь вам понадобится регулярно чистить спам.
  • Сообщество может быть открытым либо закрытым, а также приватным. Первый вариант доступен для всех, второй для пользователей, которые подали заявку и администратор сообщества одобрил ее, а в третьем случае вы самостоятельно отсылаете приглашения.
  • Вы можете просить пользователей о вступлении в группу, нажав клавишу «Пригласить друзей».
  • В сообществах много блоков с различной информацией и их просто найти.
  • Вы самостоятельно можете удалять пользователей.

Группа «ВК» полезна своим широким функционалом, но продвигать ее не так просто, для этого понадобится потратить много времени и сил.

Рейтинг групп

Есть сообщества с миллионами подписчиков, являющиеся самыми популярными «ВКонтакте». Рассмотрим пятерку лидеров:

  • Киномания Новинки 2019. Здесь вы можете посмотреть как новые фильмы, так и популярные старые. Формат видео в этой группе HD. Пользователи делятся со всеми своими комментариями и ставят актуальные оценки. Подписчиков здесь уже 12 миллионов.
  • Новая музыка 2019 Новинки. Здесь в каждом посте вы найдете популярнейшие хиты. Люди в комментариях оставляют ссылки на лучшие треки. Подписчиков неимоверное количество – 16 миллионов.
  • IGM. В странах СНГ это сообщество является самым крупным среди геймеров. Игроки проводят время, общаясь и выкладывая различные веселые посты. Обсуждают новинки игровой индустрии. Участников здесь 4 миллиона.
  • MDK. Это сообщество является юмористическим. Публикации делают не только администраторы, но и пользователи, являющиеся подписчиками. Участников 10,2 миллиона.
  • ЁП. Юмористическая группа, где пользователи оставляют интересные посты. Участников большое количество – 9 миллионов.

Конечно, популярных сообществ значительно больше, но эти являются одними из самых раскрученных. Чтобы группа заняла высокие позиции, нужно учитывать следующее:

  • Количество входящих в нее подписчиков.
  • Появление новых участников и активное поведение старых.
  • Периодичность, с которой появляются публикации.
  • Был ли бан, и когда именно.
  • Геопринадлежность участников.

Все перечисленные факторы обязательно требуется учитывать при раскрутке.

Для чего нужна популярность группы

Если в самом начале развития сообщества это может быть простым развлечением, то дальше группу правильно будет монетизировать. Ведь если она будет популярной, вам начнут предлагать публиковать рекламу. Это является самым выгодным видом заработка «ВКонтакте». За это можно получать хорошие деньги. Реклама бывает как скрытой, так и явной, посты или ссылки. Даже если вам не захочется заниматься раскруткой, вы можете выгодно продать сообщество.

Критерии популярности группы

Самым главным критерием популярности является число подписчиков. Но не всегда сообщество с большим количеством участников попадает в ТОП выдачи поисковиков. На это влияют такие факторы:

  • Небольшое количество объявлений с рекламой.
  • Правильное проведение оптимизации. Если ключевых слов будет слишком много, то это не является хорошо. Также посты должны быть грамотно написаны.
  • Минимальное количество неактивных участников. Социальная сеть «ВКонтакте» прекрасно распознает, какой аккаунт «живой», а какой нет, и сама удаляет те, которые долго не проявляют активности. С ними попасть в TOP не выйдет.

Работать необходимо не покладая рук и очень планомерно, только тогда раскрутка будет успешной.

Секреты интересных групп

Чтобы сообщество было интересно пользователям, нужно учитывать такие факторы:

  • Название должно быть максимально точным. Если в заголовке будет встречаться переспам, то читать его не станут.
  • Оформление, а также дизайн. Нужно, чтобы посты и фотографии были яркими и могли привлекать людей. Также нельзя забывать об их уникальности.
  • Уникальность текстов. Без них в интернете раскрутиться нельзя. Воровать контент никогда не стоит, он должен быть только оригинальным.
  • Нужно своевременно размещать информацию. Чаще всего, люди заходят в Сеть после обеда. Материал выкладывать стоит к этому времени. В течение дня публикуйте не менее 2-3 постов.
  • Публикуйте развлекательный материал. Это требуется делать 1 раз в неделю, чтобы фолловеры могли отвлечься и сделать репост вашего контента.
  • Занимайтесь взаимным пиаром. Вам требуется изучить похожие группы, найти контакт с администратором и поменяться постами, в которых будет ссылка на вашу группу. Этот способ хорошо работает для раскрутки.
  • Общение с пользователями. Необходимо делать такие публикации, чтобы люди хотели их обсуждать. Это отлично способствует продвижению.
  • Проводите конкурсы, акции, дарите подарки. Главное, чтобы участники сделали перепост контента на собственную страницу.

Многие люди ошибаются думая, что лайки, изображения, комментарии и все остальное не приносят никакого положительного эффекта. Если подойти к этому с умом и знаниями, то продвижение группы «ВКонтакте» будет максимально успешным.

Источник

Напишите мне пожалуйста что означают на Фикбуке рейтинги «G», «PG-13», «R», «NC-17», «NC-21»?

G (General): безобидные фики, которые можно читать всем, кто умеет. Ограничений по возрасту или степени психической устойчивости нет.

PG (Parental Guidance recommended): данные фики рекомендуется читать под присмотром родителей. Но, поскольку присматривать за Вами никто не будет, можете смело открывать такой фик, если Вам уже исполнилось 9 лет.

PG-13: данную категорию фиков могут читать с родительского разрешения дети старше 13 лет. Причина таких ограничений – возможное наличие легких ругательств, а также поцелуев и объятий героев.

PG-15: рейтинг встречается редко. Данную категорию фиков могут читать дети старше 15 лет. От PG-13 отличается наличием сцен насилия, ругательств, эротических подробностей, не шокирующих читателя, но создающих определенное настроение.

R (Restricted): фики не рекомендованы для прочтения аудиторией младше 16 лет. Такой фик затрагивает «взрослую» тематику – сексуальные сцены (без деталей), ругань, насилие, жестокость, убийство, самоубийство и т. д.

NC-17 (no children under 17): фики запрещены для прочтения лицами, не достигшими 17 лет! Обычно содержат детально прописанные эротические сцены. Могут содержать изображение чрезмерной жестокости, подробно прописанную смерть персонажей, матерную ругань, всевозможные извращения и т. д.

NC-21: рейтинг встречается редко. Понять, что под ним подразумевают, довольно сложно. В любом случае, эротические сцены в таких фиках носят явный порнографический характер, да и без жестокости, насилия, матерной ругани, извращений и смерти персонажей, скорее всего, не обойдется. Если Вам нет 21 года, то читать такие фики не рекомендуется. Лицам, не достигшим
18 лет, читать данную категорию произведений запрещено!

Источник

Это вторая статья из серии Оконные функции SQL. Рекомендую не просто читать, а проходить курс — с ним знания превратятся в навыки.

В этой части будем решать задачу ранжирования. Ранжирование — это всевозможные рейтинги, начиная от призеров чемпионата мира по плаванию и заканчивая Forbes 500. Мы же будем ранжировать сотрудников компании.

Будем работать с игрушечной таблицей employees, вот такой:

┌────┬──────────┬────────┬────────────┬────────┐
│ id │   name   │  city  │ department │ salary │
├────┼──────────┼────────┼────────────┼────────┤
│ 11 │ Дарья    │ Самара │ hr         │ 70     │
│ 12 │ Борис    │ Самара │ hr         │ 78     │
│ 21 │ Елена    │ Самара │ it         │ 84     │
│ 22 │ Ксения   │ Москва │ it         │ 90     │
│ 23 │ Леонид   │ Самара │ it         │ 104    │
│ 24 │ Марина   │ Москва │ it         │ 104    │
│ 25 │ Иван     │ Москва │ it         │ 120    │
│ 31 │ Вероника │ Москва │ sales      │ 96     │
│ 32 │ Григорий │ Самара │ sales      │ 96     │
│ 33 │ Анна     │ Москва │ sales      │ 100    │
└────┴──────────┴────────┴────────────┴────────┘
  • рейтинг зарплат,
  • рейтинг зарплат по департаментам,
  • группы по зарплате,
  • функции ранжирования.

Все запросы можно повторять в песочнице.

Рейтинг зарплат

Составим рейтинг сотрудников по размеру заработной платы:

Было

Таблица сотрудников

Стало

Рейтинг зарплат

Обратите внимание — сотрудники с одинаковой зарплатой получили один и тот же ранг (Леонид и Марина, Вероника и Григорий).

Как перейти от «было» к «стало»?

Сначала отсортируем таблицу по убыванию зарплаты:

select
  null as rank,
  name, department, salary
from employees
order by salary desc, id;
┌──────┬──────────┬────────────┬────────┐
│ rank │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│      │ Иван     │ it         │ 120    │
│      │ Леонид   │ it         │ 104    │
│      │ Марина   │ it         │ 104    │
│      │ Анна     │ sales      │ 100    │
│      │ Вероника │ sales      │ 96     │
│      │ Григорий │ sales      │ 96     │
│      │ Ксения   │ it         │ 90     │
│      │ Елена    │ it         │ 84     │
│      │ Борис    │ hr         │ 78     │
│      │ Дарья    │ hr         │ 70     │
└──────┴──────────┴────────────┴────────┘

Теперь пройдем от первой строчки до последней и проставим ранг каждой записи. Начнем с 1 и будем увеличивать ранг каждый раз, когда значение salary меньше, чем у предыдущей записи:

1️⃣

Шаг 1

2️⃣

Шаг 2

3️⃣

Шаг 3

4️⃣

Шаг 4

5️⃣

Шг 5

и так далее…

Чтобы проставить ранг, достаточно на каждом шаге смотреть только на значения из столбца salary, выделенные синей рамкой. Назовем эти значения окном.

Попробуем описать содержимое окна словами:

  • Это значения столбца salary.
  • Они упорядочены от большего значения к меньшему.

Сформулируем то же самое на SQL:

window w as (order by salary desc)
  • window — ключевое слово, которое показывает, что дальше будет определение окна;
  • w — название окна (может быть любым);
  • (order by salary desc) — описание окна («значения столбца salary, упорядоченные по убыванию»).

Задача — посчитать ранг по окну w. На SQL это записывается как dense_rank() over w.

dense_rank() — это оконная функция, которая считает ранг по указанному окну. Логика dense_rank() такая же, как была у нас при ручном подсчете — начать с 1 и увеличивать ранг каждый раз, когда очередное значение из окна отличается от предыдущего.

Добавим окно и оконную функцию в исходный запрос:

select
  dense_rank() over w as rank,
  name, department, salary
from employees
window w as (order by salary desc)
order by rank, id;
┌──────┬──────────┬────────────┬────────┐
│ rank │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│ 1    │ Иван     │ it         │ 120    │
│ 2    │ Леонид   │ it         │ 104    │
│ 2    │ Марина   │ it         │ 104    │
│ 3    │ Анна     │ sales      │ 100    │
│ 4    │ Вероника │ sales      │ 96     │
│ 4    │ Григорий │ sales      │ 96     │
│ 5    │ Ксения   │ it         │ 90     │
│ 6    │ Елена    │ it         │ 84     │
│ 7    │ Борис    │ hr         │ 78     │
│ 8    │ Дарья    │ hr         │ 70     │
└──────┴──────────┴────────────┴────────┘

Вот как движок выполняет такой запрос:

  1. Берет таблицу, указанную в from.
  2. Выбирает из нее все записи.
  3. Для каждой записи рассчитывает значение dense_rank() с помощью окна w.
  4. Сортирует результат как указано в order by.

Вот как отрабатывает шаг 3, на котором назначается ранг:

Ранжирование: ранг

Рейтинг зарплат по департаментам

Теперь составим рейтинг сотрудников по размеру заработной платы независимо по каждому департаменту:

Было

Таблица сотрудников

Стало

Рейтинг зарплат по департаментам

Как перейти от «было» к «стало»?

Сначала отсортируем таблицу по департаментам, а внутри департамента — по убыванию зарплаты:

select
  null as rank,
  name, department, salary
from employees
order by department, salary desc, id;
┌──────┬──────────┬────────────┬────────┐
│ rank │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│      │ Борис    │ hr         │ 78     │
│      │ Дарья    │ hr         │ 70     │
│      │ Иван     │ it         │ 120    │
│      │ Леонид   │ it         │ 104    │
│      │ Марина   │ it         │ 104    │
│      │ Ксения   │ it         │ 90     │
│      │ Елена    │ it         │ 84     │
│      │ Анна     │ sales      │ 100    │
│      │ Вероника │ sales      │ 96     │
│      │ Григорий │ sales      │ 96     │
└──────┴──────────┴────────────┴────────┘

Теперь пройдем от первой строчки до последней и проставим ранг каждой записи. Начнем с 1 и будем увеличивать ранг каждый раз, когда значение salary меньше, чем у предыдущей записи. При переходе от департамента к департаменту будем сбрасывать ранг обратно на 1:

1️⃣

Шаг 1

2️⃣

Шаг 2

3️⃣

Шаг 3

4️⃣

Шаг 4

5️⃣

Шг 5

и так далее…

Чтобы проставить ранг, достаточно на каждом шаге смотреть только на значения из столбца salary, выделенные синей рамкой. Это и есть окно в данном случае.

Видно, что окно меняется в зависимости от того, к какому департаменту относится текущая запись. Опишем словами:

  • Окно разбито на несколько независимых секций — по одной на департамент.
  • Внутри секции записи упорядочены по убыванию зарплаты.

Сформулируем то же самое на SQL:

window w as (
  partition by department
  order by salary desc
)
  • partition by department указывает, как следует разбить окно на секции;
  • order by salary desc задает сортировку внутри секции.

Функция расчета ранга остается прежней — dense_rank().

Добавим окно и оконную функцию в исходный запрос:

select
  dense_rank() over w as rank,
  name, department, salary
from employees
window w as (
  partition by department
  order by salary desc
)
order by department, rank, id;
┌──────┬──────────┬────────────┬────────┐
│ rank │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│ 1    │ Борис    │ hr         │ 78     │
│ 2    │ Дарья    │ hr         │ 70     │
├──────┼──────────┼────────────┼────────┤
│ 1    │ Иван     │ it         │ 120    │
│ 2    │ Леонид   │ it         │ 104    │
│ 2    │ Марина   │ it         │ 104    │
│ 3    │ Ксения   │ it         │ 90     │
│ 4    │ Елена    │ it         │ 84     │
├──────┼──────────┼────────────┼────────┤
│ 1    │ Анна     │ sales      │ 100    │
│ 2    │ Вероника │ sales      │ 96     │
│ 2    │ Григорий │ sales      │ 96     │
└──────┴──────────┴────────────┴────────┘

Вот как движок рассчитывает ранг для каждой записи:

Ранжирование: ранг по секциям

Группы по зарплате

Разобьем сотрудников на три группы в зависимости от размера зарплаты:

  • высокооплачиваемые,
  • средние,
  • низкооплачиваемые.

Было

Таблица сотрудников

Стало

Группы по зарплате

Как перейти от «было» к «стало»?

Сначала отсортируем таблицу по убыванию зарплаты:

select
  null as tile,
  name, department, salary
from employees
order by salary desc, id;
┌──────┬──────────┬────────────┬────────┐
│ tile │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│      │ Иван     │ it         │ 120    │
│      │ Леонид   │ it         │ 104    │
│      │ Марина   │ it         │ 104    │
│      │ Анна     │ sales      │ 100    │
│      │ Вероника │ sales      │ 96     │
│      │ Григорий │ sales      │ 96     │
│      │ Ксения   │ it         │ 90     │
│      │ Елена    │ it         │ 84     │
│      │ Борис    │ hr         │ 78     │
│      │ Дарья    │ hr         │ 70     │
└──────┴──────────┴────────────┴────────┘

Всего 10 записей, 3 группы — значит, две группы по 3 записи и одна 4 записи. Например, так:

┌──────┬──────────┬────────────┬────────┐
│ tile │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│      │ Иван     │ it         │ 120    │
│      │ Леонид   │ it         │ 104    │
│      │ Марина   │ it         │ 104    │
│      │ Анна     │ sales      │ 100    │
├──────┼──────────┼────────────┼────────┤
│      │ Вероника │ sales      │ 96     │
│      │ Григорий │ sales      │ 96     │
│      │ Ксения   │ it         │ 90     │
├──────┼──────────┼────────────┼────────┤
│      │ Елена    │ it         │ 84     │
│      │ Борис    │ hr         │ 78     │
│      │ Дарья    │ hr         │ 70     │
└──────┴──────────┴────────────┴────────┘

Чтобы провести границы между группами, придется анализировать все зарплаты, отсортированные по убыванию. Поэтому окно будет таким:

window w as (order by salary desc)

А вот функция потребуется другая — ntile(n), где n — количество групп. В нашем случае:

select
  ntile(3) over w as tile,
  name, department, salary
from employees
window w as (order by salary desc)
order by salary desc, id;
┌──────┬──────────┬────────────┬────────┐
│ tile │   name   │ department │ salary │
├──────┼──────────┼────────────┼────────┤
│ 1    │ Иван     │ it         │ 120    │
│ 1    │ Леонид   │ it         │ 104    │
│ 1    │ Марина   │ it         │ 104    │
│ 1    │ Анна     │ sales      │ 100    │
├──────┼──────────┼────────────┼────────┤
│ 2    │ Вероника │ sales      │ 96     │
│ 2    │ Григорий │ sales      │ 96     │
│ 2    │ Ксения   │ it         │ 90     │
├──────┼──────────┼────────────┼────────┤
│ 3    │ Елена    │ it         │ 84     │
│ 3    │ Борис    │ hr         │ 78     │
│ 3    │ Дарья    │ hr         │ 70     │
└──────┴──────────┴────────────┴────────┘

ntile(n) разбивает все записи на n групп и возвращает номер группы для каждой записи. Если общее количество записей (10 в нашем случае) не делится на размер группы (3), то первые группы будут крупнее последних.

Функции ранжирования

row_number() порядковый номер строки
dense_rank() ранг строки
rank() тоже ранг, но с пропусками
ntile(n) разбивает все строки на n групп и возвращает номер группы, в которую попала строка

dense_rank() и ntile() мы уже разобрали.

row_number() нумерует строки в порядке, указанном в order by. Никаких неожиданностей.

rank() похож на dense_rank(), a разницу проще всего показать на примере.

select
  ••• over w as rank,
  name, salary
from employees
window w as (order by salary desc)
order by rank, id;

В одном случае вместо ••• укажем dense_rank(), а в другом — rank():

dense_rank()

┌──────┬──────────┬────────┐
│ rank │   name   │ salary │
├──────┼──────────┼────────┤
│ 1    │ Иван     │ 120    │
│ 2    │ Леонид   │ 104    │
│ 2    │ Марина   │ 104    │
│ 3    │ Анна     │ 100    │
│ 4    │ Вероника │ 96     │
│ 4    │ Григорий │ 96     │
│ 5    │ Ксения   │ 90     │
│ 6    │ Елена    │ 84     │
│ 7    │ Борис    │ 78     │
│ 8    │ Дарья    │ 70     │
└──────┴──────────┴────────┘

rank()

┌──────┬──────────┬────────┐
│ rank │   name   │ salary │
├──────┼──────────┼────────┤
│ 1    │ Иван     │ 120    │
│ 2    │ Леонид   │ 104    │
│ 2    │ Марина   │ 104    │
│ 4    │ Анна     │ 100    │
│ 5    │ Вероника │ 96     │
│ 5    │ Григорий │ 96     │
│ 7    │ Ксения   │ 90     │
│ 8    │ Елена    │ 84     │
│ 9    │ Борис    │ 78     │
│ 10   │ Дарья    │ 70     │
└──────┴──────────┴────────┘

dense_rank() назначает Анне третье место, а rank() — четвертое, потому что второе-третье уже заняты Леонидом и Мариной. Аналогично с Ксенией после Вероники и Григория. Вот и вся разница.

⌘ ⌘ ⌘

Мы разобрались, что такое «окно», «оконная функция», и как использовать их для ранжирования данных. В следующей части займемся оконными сравнениями!

Чтобы закрепить знания на практике — записывайтесь на курс

Подписывайтесь на канал, чтобы не пропустить новые заметки 🚀

Я бы предложил иную расстановку.

На первое место я бы поставил альбомы: «Как в старой сказке» и «Герои и Злодеи». На мой взгляд — это самые концептуальные альбомы. Что тот, что другой альбом содержат песни, имеющие одну атмосферу, что и делает их не отдельными песнями, а целым Альбомом. Поэтому вот так:

2001 — Как в старой сказке

2000 — Герои и Злодеи

1996 — Камнем по голове

2006 — Продавец кошмаров

2008 — Тень клоуна

2002 — Жаль, нет ружья

1997 — Король и Шут

1994 — Будь как дома, путник…

2004 — Бунт на корабле

2010 — Театр демона

1998 — Акустический альбом

2011 — TODD. Акт 1. Праздник крови

2012 — TODD. Акт 2. На краю

Такой рейтинг можно составить учитывая степень вклада в искусство, а так же оригинальность инструментальных партий, текстов и голосовых партий.

Понравилась статья? Поделить с друзьями:
  • Как найти свое видео в рилс
  • Я плакса как исправить
  • Как найти номер отправления алиэкспресс
  • Как найти подход к мужчине водолею мужчине
  • Как исправить демографическую ситуацию в россии