按照日期时间和总和,对MySQL进行排名
P粉322319601
P粉322319601 2023-09-01 08:49:20
[MySQL讨论组]

我有一个存储购买记录的数据库:

| user_id | product | price |  datetime  |
-----------------------------------------
|    1    |    1    | -0.75 | 2022-01-01 |
|    2    |    1    | -0.75 | 2022-01-01 |
|    3    |    2    | -0.65 | 2022-01-01 |
|    2    |    1    | -0.75 | 2022-01-01 |
|    1    |    1    | -0.75 | 2022-01-02 |
|    1    |    3    | -1.50 | 2022-01-02 |
|    1    |    2    | -0.65 | 2022-01-02 |
|    2    |    1    | -0.75 | 2022-01-02 |
|    3    |    2    | -0.65 | 2022-01-02 |
|    3    |    3    | -1.50 | 2022-01-02 |
|    3    |    3    | -1.50 | 2022-01-02 |

N.B. 时间在这个问题中不重要。

我想要的是每天每个用户的排名,比如用户1的情况如下:

|   datetime    | product1 | product2 |  product3 | total | ranking |
--------------------------------------------------------------------
|  2022-01-01   |     1    |     0    |     0     |  0.75 |    2    |
|  2022-01-02   |     1    |     1    |     1     |  2.90 |    2    |

请注意,排名是针对每天计算的。

下面的查询给出了表的一部分:

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) as total,
FROM `history` 
WHERE user_id=1
GROUP BY DATE(`datetime`)

我的问题与这个问题非常相似:MySQL ranking,但我无法完全按照我的要求得到结果。只能对每天的所有用户进行排名。如果我添加给定的排名功能,它将查看表格并将2022-01-02作为第一名(因为2.90比0.75更高)。如何使排名针对每天进行?

P粉322319601
P粉322319601

全部回复(1)
P粉707235568

问题并不完全清楚。然而,我认为你在问的是如何按天对所有用户的购买进行排名:

history_date user_id DailyTotal totalRank
2022-01-01 2 1.50 1
2022-01-01 1 0.75 2
2022-01-01 3 0.65 3
2022-01-02 3 3.65 1
2022-01-02 1 2.90 2
2022-01-02 2 0.75 3
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号