В этом посте мы узнаем, как использовать SQL список самых популярных сообщений (в соответствии с количеством комментариев для каждого сообщения). В этих сообщениях мы получим базовую статистику по сообщениям в 2016 году, а также узнаем 10 лучших сообщений, отсортированных по результатам голосования.
Общее количество сообщений
На основе этого SQL :
SELECT
count(1)
FROM
wp_posts
WHERE
post_type = "post" and
post_status = "publish" and
date_format(post_date_gmt, "%Y") = "2016"
Мы знаем, что в 2016 году было опубликовано 245 постов.
+----------+
| count(1) |
+----------+
| 245 |
+----------+
1 row in set (0.01 sec)
Топ самых обсуждаемых постов
И на основе SQL у нас есть самые обсуждаемые посты за этот год, т.е. 2016.
SELECT
post_name, post_title
FROM
wp_posts
WHERE
post_type = 'post' and
post_status = 'publish' and
date_format(post_date_gmt, "%Y") = '2016'
ORDER BY
comment_count DESC
LIMIT 10
Мы знаем 10 самых обсуждаемых (самых популярных) сообщений в 2016 году. Измените ограничение 10, чтобы разрешить показ большего количества сообщений, например, ограничение 20.
+--------------------------------------------------------------------------------+------------------------------------------------------------------------+
| post_name | post_title |
+--------------------------------------------------------------------------------+------------------------------------------------------------------------+
| cc-coding-exercise-convert-a-number-to-hexadecimal | C/C++ Coding Exercise - Convert a Number to Hexadecimal? |
| dynamic-programming-how-many-ways-to-connect-the-pipes | Dynamic Programming - How many ways to connect the pipes? |
| when-xx-evaluates-to-false-in-cc | When x==x Evaluates to FALSE in C/C++? |
| how-to-compute-sum-of-two-integers-without-plus-and-minus-operators | How to Compute Sum of Two Integers without Plus+ and Minus- Operators? |
| how-to-find-intersection-of-two-arrays-in-c | How to Find Intersection of Two Arrays in C++? |
| bit-manipulation-how-to-set-all-bits-between-i-and-j-in-n-equal-to-m-cplusplus | Bit Manipulation: How to Set All Bits Between i and j in N equal to M? |
| how-to-check-valid-anagram-in-cc | How to Check Valid Anagram in C/C++? |
| c-coding-exercise-number-of-1-bits-revisited | C++ Coding Exercise - Number of 1 Bits (Revisited) |
| dynamic-programming-integer-break | Dynamic Programming - Integer Break |
| cc-coding-exercise-find-the-duplicate-number | C/C++ Coding Exercise - Find the Duplicate Number |
+--------------------------------------------------------------------------------+------------------------------------------------------------------------+
10 rows in set (0.01 sec)
Это (на момент написания):
- Упражнение по программированию на C/C++. Преобразование числа в шестнадцатеричное?
- Динамическое программирование – Сколько способов соединения труб?
- Когда x==x оценивается как FALSE в C/C++?
- Как вычислить сумму двух целых чисел без операторов плюс+ и минус-?
- Как найти пересечение двух массивов в C++?
- Манипуляции с битами: как установить все биты между i и j в N равными M?
- Как проверить правильность анаграммы в C/C++?
- Упражнение по программированию на C++ — количество битов 1 (повторное посещение)
- Динамическое программирование — целочисленный разрыв
- Упражнение по написанию кода на C/C++. Найдите повторяющийся номер
Сообщения с наибольшим количеством голосов через SQL
Теперь мы можем объединить статистику голосования из плагина GD Star Rating и получить еще один интересный рейтинг.
Это дает следующие 10 самых популярных постов года:
+------+----------------------------------------------------------------------------+-------------+---------------+------------+
| ID | title | total_votes | visitor_votes | user_votes |
+------+----------------------------------------------------------------------------+-------------+---------------+------------+
| 4793 | When x==x Evaluates to FALSE in C/C++? | 105.0 | 95.0 | 10.0 |
| 4679 | How to Find the Maximum of Two Integers without Using Comparison Operator? | 81.0 | 81.0 | 0.0 |
| 4191 | How to Delete a Node from a Binary Search Tree? | 68.0 | 58.0 | 10.0 |
| 4380 | C++ Coding Exercise: How to Check if a Large Integer is divisible by 11? | 67.0 | 57.0 | 10.0 |
| 4329 | Microsoft Interview Question - Get the Area of the Triangle | 66.0 | 66.0 | 0.0 |
| 4740 | PPAP in C++ and Javascript for Beginner | 62.0 | 52.0 | 10.0 |
| 4166 | How to Invert a Binary Tree in C/C++? | 48.0 | 48.0 | 0.0 |
| 4176 | How to Reverse Bits for 32-bit Unsigned Integer in C/C++? | 46.0 | 46.0 | 0.0 |
| 4178 | C++ Coding Exercise - How to Find First Missing Number? | 40.0 | 40.0 | 0.0 |
| 4227 | Dynamic Programming - Integer Break | 31.0 | 31.0 | 0.0 |
+------+----------------------------------------------------------------------------+-------------+---------------+------------+
10 rows in set (0.01 sec)
- Когда x==x оценивается как FALSE в C/C++?
- Как найти максимум двух целых чисел без использования оператора сравнения?
- Как удалить узел из двоичного дерева поиска?
- Упражнение по программированию на C++: как проверить, делится ли большое целое число на 11?
- Вопрос для интервью в Microsoft — получите площадь треугольника
- PPAP на C++ и Javascript для начинающих
- Как инвертировать двоичное дерево в C/C++?
- Как перевернуть биты для 32-битного целого числа без знака в C/C++?
- Упражнение по программированию на C++ — как найти первое пропущенное число?
- Динамическое программирование — целочисленный разрыв
Конечно, вы можете изменить оба приведенных выше SQL-запроса так, чтобы они давали 12 сообщений, т. е. по одному лучшему за каждый месяц. Вам просто нужно сгруппировать по месяцам следующим образом:
GROUP BY date_format(`p`.post_date_gmt, "%M")
Кроме того, вы можете создать PHP -страницу, которая предоставляет самые последние рейтинговые таблицы для сообщений, но то, что было показано здесь, является статическим, т.е. ранжирующая таблица генерируется в том виде, в каком она есть на сегодняшний день.
SQL