Ordnen Sie MySQL nach Datum, Uhrzeit und Summe
P粉322319601
2023-09-01 08:49:20
<p>Ich habe eine Datenbank, in der Kaufdatensätze gespeichert werden: </p>
<pre class="brush:php;toolbar:false;">|. user_id datetime |
----------------------------------------
|. 1 |. -0,75 |
|. 2 |. -0,75 |
|. 3 |. 2022-01-01 |
|. 2 |. -0,75 |
|. 1 |. -0,75 |
|. 1 |. 2022-01-02 |
|. 1 |. 2022-01-02 |
|. 2 |. 0,75 |
|. 3 |. 2022-01-02 |
|. 3 |. -1,50 |
|. 3 |. -1,50 |. 2022-01-02 |
<p>N.B. Zeit ist bei diesem Problem nicht wichtig. </p>
<p>Was ich möchte, ist das Ranking jedes Benutzers jeden Tag. Die Situation von Benutzer 1 ist beispielsweise wie folgt: </p>
<pre class="brush:php;toolbar:false;">|. datetime |
-------------------------------------------------- -------------------
|. 01.01.2022 |
|. 2022-01-02 |. 1 |.
<p>Bitte beachten Sie, dass die Rankings täglich berechnet werden. </p>
<p>Die folgende Abfrage gibt einen Teil der Tabelle zurück: </p>
<pre class="lang-sql Prettyprint-override"><code>SELECT
DATE(`datetime`) AS datetime,
SUM(CASE WHEN product = 1 THEN 1 ELSE 0 END) AS product1,
SUM(CASE WHEN product = 2 THEN 1 ELSE 0 END) AS product2,
SUM(CASE WHEN product = 3 THEN 1 ELSE 0 END) AS product3,
SUM(CASE WHEN product = 1 THEN 0.75 ELSE 0 END)+SUM(CASE WHEN product = 2 THEN 0.65 ELSE 0 END)+SUM(CASE WHEN product = 3 THEN 1.5 ELSE 0 END) als Gesamtsumme,
AUS „Geschichte“.
WHERE user_id=1
GRUPPE NACH DATUM(`datetime`)
</code></pre>
<p>Mein Problem ist diesem sehr ähnlich: MySQL-Ranking, aber ich kann die Ergebnisse nicht genau so erhalten, wie ich es verlangt habe. Es können nur alle Benutzer für jeden Tag eingestuft werden. Wenn ich die angegebene Ranking-Funktion hinzufüge, schaut sie sich die Tabelle an und setzt den 02.01.2022 an die erste Stelle (da 2,90 höher als 0,75 ist). Wie sorge ich dafür, dass die Ranglisten für jeden Tag funktionieren? </p>
问题并不完全清楚。然而,我认为你在问的是如何按天对所有用户的购买进行排名: