В comments — комментарии к постам ВКонтакте. У ответа parent_id указывает на комментарий, на который отвечают; у корневого комментария parent_id пустой. Удалённый комментарий не стирается: is_deleted = true, текст скрыт, но ответы под ним остаются видны.
Для каждого корневого комментария поста 777 верните root_id, replies — число неудалённых ответов на любом уровне ветки и depth — наибольший уровень среди неудалённых ответов (прямой ответ на корень — уровень 1). Если неудалённых ответов нет, replies и depth равны 0. Корень выводится, даже если сам удалён. Порядок — по replies по убыванию, затем по root_id.
В работе: Сортировка «Интересные сначала»: ветку с живым обсуждением поднимают, даже если первое сообщение удалили.
Таблицы
comments — одна строка — один комментарий
| Колонка | Тип | Что значит |
|---|---|---|
comment_id | int | ключ |
post_id | int | пост |
parent_id | int | на что отвечают, NULL — корень |
author_id | int | автор |
is_deleted | boolean | удалён |
Пример: данные
comments · 7 строк
| comment_id | post_id | parent_id | author_id | is_deleted |
|---|---|---|---|---|
| 1 | 777 | NULL | 501 | False |
| 2 | 777 | 1 | 502 | False |
| 3 | 777 | 2 | 503 | False |
| 4 | 777 | 1 | 504 | False |
| 5 | 777 | NULL | 505 | False |
| 6 | 777 | 5 | 506 | False |
| 7 | 777 | NULL | 507 | False |
Ожидаемый ответ
| root_id | replies | depth |
|---|---|---|
| 1 | 3 | 2 |
| 5 | 1 | 1 |
| 7 | 0 | 0 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
root_id, replies, depth
Источник: наша задача на данных VK: ветки комментариев ВКонтакте. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.