Come elencare i post più votati in un anno utilizzando SQL?
In questo post, impariamo come utilizzare SQL elencare i post più popolari (in base al numero di commenti per ogni post). In questo post, otterremo alcune statistiche di base per i post nel 2016 e impareremo anche i primi 10 post ordinati in base alle votazioni.
Numero totale di messaggi
Basato su questo SQL :
SELECT
count(1)
FROM
wp_posts
WHERE
post_type = "post" and
post_status = "publish" and
date_format(post_date_gmt, "%Y") = "2016"
Sappiamo che ci sono 245 post pubblicati nel 2016.
+----------+
| count(1) |
+----------+
| 245 |
+----------+
1 row in set (0.01 sec)
I post più discussi
E basandoci sull’SQL, abbiamo i post più discussi per quest’anno, ovvero il 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
Conosciamo i primi 10 post più discussi (come i più popolari) nel 2016. Modifica il limite 10 per consentire più post mostrati, ad esempio limite 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)
Questi sono (al momento della scrittura):
- Esercizio di codifica C/C++: convertire un numero in esadecimale?
- Programmazione Dinamica – Quanti modi per collegare i tubi?
- Quando x==x valuta FALSE in C/C++?
- Come calcolare la somma di due interi senza operatori Plus+ e Minus-?
- Come trovare l’intersezione di due array in C++?
- Manipolazione dei bit: come impostare tutti i bit tra i e j in N uguali a M?
- Come controllare un anagramma valido in C/C++?
- Esercizio di codifica C++ – Numero di 1 bit (rivisitato)
- Programmazione dinamica – Interruzione di numeri interi
- Esercizio di codifica C/C++ – Trova il numero duplicato
Post più votati tramite SQL
Ora possiamo combinare le statistiche di voto da GD Star Rating Plugin e ottenere un’altra classifica interessante.
Questo dà i seguenti 10 post più votati dell’anno:
+------+----------------------------------------------------------------------------+-------------+---------------+------------+
| 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)
- Quando x==x valuta FALSE in C/C++?
- Come trovare il massimo di due numeri interi senza utilizzare l’operatore di confronto?
- Come eliminare un nodo da un albero di ricerca binario?
- Esercizio di codifica C++: come verificare se un intero grande è divisibile per 11?
- Domanda dell’intervista Microsoft: ottieni l’area del triangolo
- PPAP in C++ e Javascript per principianti
- Come invertire un albero binario in C/C++?
- Come invertire i bit per un intero senza segno a 32 bit in C/C++?
- Esercizio di codifica C++: come trovare il primo numero mancante?
- Programmazione dinamica – Interruzione di numeri interi
Naturalmente, è possibile modificare entrambe le query SQL di cui sopra in modo da fornire 12 post, ovvero uno dei migliori per ogni mese. Devi solo raggruppare per mese in questo modo:
GROUP BY date_format(`p`.post_date_gmt, "%M")
Inoltre, potresti creare una pagina PHP che fornisce le tabelle di ranking più aggiornate per i post, ma ciò che è stato mostrato qui è statico, ovvero la tabella di ranking viene generata come è oggi.
SQL