Classer MySQL par date, heure et somme
P粉322319601
2023-09-01 08:49:20
<p>J'ai une base de données qui stocke les enregistrements d'achat : </p>
<pre class="brush:php;toolbar:false;">| user_id prix du produit |
---------------------------------------------
| 1 | 1 | -0,75 |
| 2 | 1 | -0,75 |
| 3 | 2 | -0,65 |
| 2 | 1 | -0,75 |
| 1 | 1 | -0,75 |
| 1 | 3 | -1,50 |
| 1 | 2 | -0,65 |
| 2 | 1 | -0,75 |
| 3 | 2 | -0,65 |
| 3 | 3 | -1,50 |
| 3 | 3 | -1,50 | 2022-01-02 |</pré>
<p>N.B. Le temps n’est pas important dans ce problème. </p>
<p>Ce que je veux, c'est le classement de chaque utilisateur chaque jour. Par exemple, la situation de l'utilisateur 1 est la suivante : </p>
<pre class="brush:php;toolbar:false;">| datetime | produit2 |
-------------------------------------------------- -------------------
| 2022-01-01 |
| 2022-01-02 | 1 | 1 | 2,90 |≪/pré>
<p>Veuillez noter que les classements sont calculés quotidiennement. </p>
<p>La requête suivante donne une partie du tableau : </p>
<pre class="lang-sql Prettyprint-override"><code>SELECT
DATE(`datetime`) AS dateheure,
SOMME (CAS QUAND produit = 1 PUIS 1 ELSE 0 FIN) COMME produit1,
SOMME (CAS QUAND produit = 2 PUIS 1 ELSE 0 FIN) COMME produit2,
SOMME (CAS QUAND produit = 3 PUIS 1 ELSE 0 FIN) COMME produit3,
SOMME (CAS QUAND produit = 1 PUIS 0,75 ELSE 0 END) + SOMME (CAS QUAND produit = 2 ALORS 0,65 ELSE 0 END) + SOMME (CAS QUAND produit = 3 ALORS 1,5 ELSE 0 END) au total,
DE 'l'histoire'
OÙ id_utilisateur=1
GROUPE PAR DATE(`datetime`)
</code></pre>
<p>Mon problème est très similaire à celui-ci : le classement MySQL, mais je n'arrive pas à obtenir les résultats exactement comme je l'ai demandé. Seuls tous les utilisateurs de chaque jour peuvent être classés. Si j'ajoute la fonction de classement donnée, elle examinera le tableau et mettra le 02/01/2022 en premier (car 2,90 est supérieur à 0,75). Comment faire fonctionner les classements pour chaque jour ? </p>
La question n'est pas tout à fait claire. Cependant, je pense que ce que vous demandez, c'est comment classer les achats de tous les utilisateurs par jour :