Je suis en train de faire un graphique dans Rails, par exemple le montant des ventes de moyenne par jour pour chaque jour dans une période donnéeLa meilleure façon de MySQL ou Rails pour obtenir AVG par jour dans une plage de date précise
Dites que j'ai un modèle products_sold qui a un attribut float "sales_price". Mais si un jour spécifique n'a pas de ventes (par exemple aucune dans le modèle/db), je veux retourner simplement 0.
Quelle est la meilleure façon de faire cela dans MySQL/Rails? Je sais que je peux faire quelque chose comme ceci:
(Cette requête SQL peut être la façon tout à fait tort d'obtenir ce que je suis vouloir trop)
SELECT avg(sales_price) AS avg, DATE_FORMAT(created_at, '%m-%d-%Y') AS date
FROM products_sold WHERE merchant_id = 1 GROUP BY date;
et obtenir des résultats comme celui-ci:
| avg | date | 23 01-03-2009 50 01-05-2009 34 01-07-2009 ... ...
ce que je voudrais faire est la suivante:
| avg | date | 23 01-03-2009 0 01-04-2009 50 01-05-2009 0 01-06-2009 34 01-07-2009 0 01-08-2009 ... ...
Est-ce que je peux faire ceci avec SQL ou devrais-je post-traiter les résultats pour trouver quelles dates dans le Daterange ne sont pas dans l'ensemble de résultat de SQL? Peut-être ai-je besoin de sous-sélections ou d'instructions IF?
Merci pour toute aide à tous.