Отлично.
Я раньше не использовал REGEXP_MATCHES, но только что протестировал эти запросы (вернее, второй. У меня не установлен Retort
).
Кажется, вам нужно использовать GROUP BY emoji, а не smiley. Также условие user_id > 1 исключит исходного администратора. Возможно, это намеренно, но я хотел упомянуть об этом. ![]()
Я также попросил Берта
дать объяснение, если кому-то ещё это будет полезно:
Что сказал Берт:
Этот запрос используется для подсчёта количества использований каждого эмодзи в таблице posts.
Вот разбор запроса:
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: это основная часть запроса. Она подсчитывает количество строк (count(*)) и использует регулярное выражение (REGEXP_MATCHES) для поиска и извлечения эмодзи из колонкиraw. Регулярное выражение' :([a-z_]+): 'ищет паттерны, которые начинаются и заканчиваются двоеточием (:) и содержат одну или несколько строчных букв или подчёркиваний между ними. Флаг «g» означает глобальный поиск, то есть будут найдены все совпадения, а не только первое. Найденное эмодзи затем псевдонимизируется какemoji.FROM posts: указывает таблицу, из которой извлекаются данные, в данном случае таблицуposts.WHERE user_id > 0: это условие, которое фильтрует рассматриваемые строки. Включаются только строки, гдеuser_idбольше 0.GROUP BY emoji: группирует результаты по псевдонимуemoji. Это означает, что для каждого уникального эмодзи будет подсчитано количество строк.ORDER BY 1 DESC: сортирует результаты по первой колонке в наборе результатов (то есть по счётчику) в порядке убывания. Это означает, что наиболее часто используемые эмодзи появятся первыми.
Итак, вкратце: этот запрос подсчитывает количество использований каждого эмодзи в таблице posts для записей, где user_id больше 0, и сортирует результаты так, чтобы наиболее часто используемые эмодзи отображались первыми.