✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как составить список самых популярных сообщений за год с помощью SQL?

39

В этом посте мы узнаем, как использовать 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)

Это (на момент написания):

  1. Упражнение по программированию на C/C++. Преобразование числа в шестнадцатеричное?
  2. Динамическое программирование – Сколько способов соединения труб?
  3. Когда x==x оценивается как FALSE в C/C++?
  4. Как вычислить сумму двух целых чисел без операторов плюс+ и минус-?
  5. Как найти пересечение двух массивов в C++?
  6. Манипуляции с битами: как установить все биты между i и j в N равными M?
  7. Как проверить правильность анаграммы в C/C++?
  8. Упражнение по программированию на C++ — количество битов 1 (повторное посещение)
  9. Динамическое программирование — целочисленный разрыв
  10. Упражнение по написанию кода на C/C++. Найдите повторяющийся номер

Сообщения с наибольшим количеством голосов через SQL

Теперь мы можем объединить статистику голосования из плагина GD Star Rating и получить еще один интересный рейтинг.

SELECT 
   `p`.`ID`, 
   `p`.`post_title` as `title`, 
   `visitor_votes` + `user_votes` as `total_votes`, 
   `visitor_votes`, 
   `user_votes`  
FROM  
  `wp_gdsr_data_article` as `da` 
INNER JOIN 
  `wp_posts` as `p` ON `da`.`post_id` = `p`.`ID` 
WHERE
  `p`.post_type = 'post' and 
  `p`.post_status = 'publish' and  
  date_format(`p`.`post_date_gmt`, "%Y") = '2016'
HAVING
  `total_votes` > 0
ORDER BY
  `total_votes` desc 
LIMIT 10

Это дает следующие 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)
  1. Когда x==x оценивается как FALSE в C/C++?
  2. Как найти максимум двух целых чисел без использования оператора сравнения?
  3. Как удалить узел из двоичного дерева поиска?
  4. Упражнение по программированию на C++: как проверить, делится ли большое целое число на 11?
  5. Вопрос для интервью в Microsoft — получите площадь треугольника
  6. PPAP на C++ и Javascript для начинающих
  7. Как инвертировать двоичное дерево в C/C++?
  8. Как перевернуть биты для 32-битного целого числа без знака в C/C++?
  9. Упражнение по программированию на C++ — как найти первое пропущенное число?
  10. Динамическое программирование — целочисленный разрыв

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

GROUP BY date_format(`p`.post_date_gmt, "%M")

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

SQL

Источник записи: helloacm.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее