Dans cet exemple, je vais vous montrer quelques requêtes MySql utiles pour afficher des rapports analytiques d'utilisateurs ou de produits sur les performances de vos produits.
Supposons que vous ayez un site Web de base de produits et que vous deviez calculer le nombre de clics et de clics uniques sur le produit, ou que vous deviez afficher une vue graphique des clics mensuels ou annuels ou des clics uniques. À cette fin, ces requêtes sont très utiles.
J'ai ici un tableau analytique des produits avec des données analytiques.
product_analytic
| Product_Id | Cliquez | IP | Créé | Mise à jour |
|---|---|---|---|---|
| 1 | 1 | 192.168.1.1 | 2016-01-01 00:00:00 | 2016-01-01 00:00:00 |
| 1 | 1 | 192.168.1.1 | 2016-01-01 00:00:00 | 2016-01-01 00:00:00 |
| 2 | 1 | 192.168.2.1 | 2016-01-02 00:00:00 | 2016-01-02 00:00:00 |
| .. | .. | 1.. | … | … |
| .. | .. | 1.. | … | … |
| .. | .. | 1.. | … | … |
À partir de ce tableau, je dois récupérer les clics et les clics uniques sur le produit jour, semaine, mois, année.
Récupération des données par jour
SELECT
DATE(created) AS date,
COUNT(click) AS click,
COUNT(DISTINCT(ip)) AS unique_click
FROM product_analytic
WHERE created BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY date
ORDER BY date |
SORTIE :

Récupération des données par semaine
SELECT
DATE_FORMAT(created, '%X-%V') AS date,
COUNT(click) AS click,
COUNT(DISTINCT(ip)) AS unique_click
FROM product_analytic
WHERE created BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY date
ORDER BY date |
Récupération des données par mois
SELECT
DATE_FORMAT(created, '%Y-%m') AS date,
COUNT(click) AS click,
COUNT(DISTINCT(ip)) AS unique_click
FROM product_analytic
WHERE created BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY date
ORDER BY date |
Récupération des données par année
SELECT
DATE_FORMAT(created, '%Y') AS date,
COUNT(click) AS click,
COUNT(DISTINCT(ip)) AS unique_click
FROM product_analytic
WHERE created BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY date
ORDER BY date |