我想對我的數據庫中的記錄進行統計,我想計算用戶從某個日期時間和/或某個日期時間以及每個4每天小時數獲取日期時間從/到特定小時之間的平均數
簡單示例:我想從'2016-09-20 00:00:00'到'2016-09-23 23:59:59'的成功登錄平均值,結果應該是('00:00:00' - '11:59:59')和''12:00:00' - '23:59:59'示例數據(其中狀態1表示成功,0表示不成功):
| id | | driver_id | login_timedate | status |
| 1 | | 1 | '2016-09-20 00:00:11' | 1 |
| 2 | | 2 | '2016-09-20 01:16:09' | 1 |
| 3 | | 2 | '2016-09-20 23:01:16' | 1 |
| 4 | | 3 | '2016-09-21 04:04:59' | 1 |
| 5 | | 3 | '2016-09-21 05:06:59' | 0 |
| 6 | | 2 | '2016-09-21 16:06:59' | 1 |
| 7 | | 1 | '2016-09-22 00:16:59' | 1 |
| 8 | | 2 | '2016-09-23 04:09:22' | 0 |
| 9 | | 1 | '2016-09-23 06:22:59' | 1 |
| 10 | | 3 | '2016-09-23 22:09:22' | 1 |
| 11 | | 1 | '2016-09-24 00:00:22' | 1 |
因此,在這種情況下,我會得到成功登錄的總數從(20-23/09/2016)是:8(DAY1 = 3,DAY2 = 2,第3天 = 1,第四天 = 2)
總數的範圍內的每一天從('00成功的:00:00' - '11:59:59')是(DAY1 = 2,DAY2 = 1,第三天 = 1,第四天 = 1)
平均: 5/4 = 1.25
總數成功的的範圍內的每一天從('00:00:00' - '11:59:59')是(DAY1 = 1,DAY2 = 0,第3天= 1,第四天= 1)
平均: 3/4 = 0 。75
我已經做了第一部分獲得的日期時間範圍內成功登錄的總數,這是我的代碼(這將返回8)
SET @start_date = '2016-09-20';
SET @start_taime = '00:00:00';
SET @end_date = '2016-09-23';
SET @end_time = '23:59:59';
SELECT SUM(`total_logins`.`number_of_success`) FROM (
SELECT COUNT(`login_logs`.`driver_id`) AS `number_of_success`
FROM `login_logs`
WHERE `login_logs`.`status` = 1
AND
`login_logs`.`login_timedate` >= CONCAT(@start_date, ' ', @start_time)
AND
`login_logs`.`login_timedate` <= CONCAT(@end_date, ' ', @end_time)
GROUP BY `login_logs`.`user_id`
) AS `total_logins`
#更新: 此代碼的預期輸出:
| total_logins |
| 8 |
我想這樣做,其計算相同的日期時間範圍內的平均登錄從XX的下一部分:XX:XX時間YY:YY:YY時間如此:
- 總數成功的的範圍內的每一天從('00:00:00' - '11:59:59')是(DAY1 = 2,DAY2 = 1 ,第三天 = 1,第四天 = 1)
- 平均: 5/4 = 1.25
#UPDATE: 預期輸出修改我的代碼來獲得avrage後(00:00:00' - '11:59:59' ):
| Avrage_00_12 |
| 1.25 |
應該如何我修改代碼來實現這部分?
我希望你明白我的問題
感謝您的幫助先進
我不完全聽從你的問題。請向我們展示您的預期產出。 –
@TimBiegeleisen已更新它的問題與預期的產出 –