Je travaille sur une requête où je cherchenuméros de commande. Je dois filtrer les numéros de commande uniques pour la journée. Pour cela, j'ai utilisé count (numéro_ordre distinct) dans ma requête principale. Cette requête prend les dates de début et de fin du front-end et les utilise. Cependant, j'ai un problème, s'il y a le même numéro d'ordre pendant 2 jours dans la plage, il sera compté pour les deux jours. c'est à dire. Compter le nombre de commandes uniques pour une journée. Au début, je pensais utiliser une boucle sur les dates et faire la somme des résultats, mais cela ne me semble pas juste. Je serais plus intéressé d'utiliser la même requête et de la modifier pour des commandes distinctes en fonction de la date. Voici ma requête:
SELECT "site1" AS site,
DATE_FORMAT(l.login_time, "%m/%d/%Y") AS DATE,
COUNT(DISTINCT osh.order_num) AS total_orders
FROM order_history o
INNER JOIN logs l ON o.userID = l.id
WHERE o.date_time BETWEEN 1380524400 AND 1380610799
AND l.LOGIN BETWEEN FROM_UNIXTIME(1380524400) AND FROM_UNIXTIME(1380610799)
GROUP BY DATE
Exemple
Supposons que pour la date du 29 août, les ordres o1, o2, o1, o3, o2 soient comptés comme 3 ordres distincts, à savoir o1, o2,03. pour le 30 août, j’ai les ordres o1, o4, o4, o1, je les compterai comme deux ordres distincts, c’est-à-dire o1, o4
mais quand je demande pour 29-30 août je dois obtenir le compte de 3 + 2 = 5 c'est à dire que o1 est compté deux fois dans la plage sicne il appartient à deux dates diff.
Réponses:
2 pour la réponse № 1Je pense que dans ce cas le WITH ROLLUP
modificateur pourrait servir votre but
SELECT "site1" AS site,
DATE_FORMAT(l.login_time, "%m/%d/%Y") AS `DATE`,
COUNT(DISTINCT osh.order_num) AS total_orders
FROM order_history o
INNER JOIN logs l ON o.userID = l.id
WHERE o.date_time BETWEEN 1380524400 AND 1380610799
AND l.LOGIN BETWEEN FROM_UNIXTIME(1380524400) AND FROM_UNIXTIME(1380610799)
GROUP BY `DATE` WITH ROLLUP
Cela ajouterait une ligne supplémentaire à la fin de vos données qui résumerait le total_orders
data (avec une valeur NULL pour DATE
)
Voici la documentation sur ce modificateur: http://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html