基于 Mysql 5.7
,想要做的效果是查看商品上升排名最多的商品
表结构如下,每 10 分钟打点一次,记录商品排名:
create table product_info
(
prodcut_name varchar(16) null comment '商品名',
total_index smallint null comment '总排名',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间'
);
本来想用
SELECT prodcut_name, max(total_index) - min(total_index) AS index_diff
FROM product_info
WHERE create_time > '2021-07-01 00:00:00'
GROUP BY prodcut_name
ORDER BY index_diff DESC
limit 10;
但是发现这个只是考虑了差值,没有考虑到最大值的时间必须在最小值的时间前,这样写会下降排名最多的也会显示。这下 SQL 语句不会写了,思来想去只能分个语句写,想请问下有没有可写在一条的语句呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.