日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql 排序取前4_MySQL时间段分组排序后取前10的问题?

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 排序取前4_MySQL时间段分组排序后取前10的问题? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

# 創建表

CREATE TABLE `orders` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`user_id` bigint(20) NOT NULL COMMENT '用戶id',

`battery_id` int(11) NOT NULL COMMENT '充電寶id',

`city_id` int(11) NOT NULL COMMENT '城市id',

`start_time` datetime NOT NULL COMMENT '訂單起始時間',

`end_time` datetime NOT NULL COMMENT '訂單結束時間',

PRIMARY KEY (`id`),

KEY `idx_user_id` (`user_id`),

KEY `idx_battery_id` (`battery_id`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=1284 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='充電寶訂單表';

# 模擬數據

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(1, 500, 15, '2019-10-01 18:18:10', '2019-10-01 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(1, 500, 15, '2019-10-01 19:18:10', '2019-10-01 19:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(2, 501, 15, '2019-10-01 18:18:10', '2019-10-01 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(3, 502, 16, '2019-10-01 18:18:10', '2019-10-01 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(1, 500, 15, '2019-10-02 18:18:10', '2019-10-02 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(4, 500, 15, '2019-10-02 19:18:10', '2019-10-02 19:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(5, 501, 15, '2019-10-02 18:18:10', '2019-10-02 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(6, 502, 16, '2019-10-02 18:18:10', '2019-10-02 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(7, 500, 15, '2019-10-03 18:18:10', '2019-10-03 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(1, 500, 15, '2019-10-03 19:18:10', '2019-10-03 19:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(1, 501, 15, '2019-10-03 18:18:10', '2019-10-03 18:18:10');

insert into orders (user_id,battery_id,city_id, start_time, end_time) values(8, 502, 16, '2019-10-03 18:18:10', '2019-10-03 18:18:10');

問題

充電寶被使用一次使用率+1,如果同一天被同一用戶多次使用,則該用戶使用的第二次開始,每次使用率+0.5,次日0點充電寶使用率重置為0;統計2019-10-01 ~ 2019-10-03 23:59:59時間段內使用率最高的2個充電寶,并顯示其使用率。

目前所完成的SQL

SELECT *, sum(eve.xl) AS total FROM

(

SELECT battery_id, date_format(start_time, '%Y%m%d') AS days, count(*)/2+0.5 AS xl, user_id

FROM orders

GROUP BY days, battery_id, user_id

ORDER BY xl DESC

) AS eve

GROUP BY days, battery_id

ORDER BY days DESC, total DESC

上面查詢語句確實是算出使用率了,但是應該怎么篩選「每天前2使用率」?

求解答,求優化~

總結

以上是生活随笔為你收集整理的mysql 排序取前4_MySQL时间段分组排序后取前10的问题?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。