簡體   English   中英

如何獲得過去 7 天內每小時的條目數?

[英]How do I get number of entries per hour by the last 7 days?

我正在為 MySQL 中的某個查詢而苦苦掙扎。 我真的嘗試了一切! 如果有人為我指明正確的方向,我將永遠感激不盡。 我的目標是生成一個查詢,顯示過去 7 天每小時的請求數。 我遇到的問題之一是顯示日期的名稱,而不管該日期是否已存在於數據庫中。 換句話說,我希望星期日、星期一、星期二、星期三、星期四、星期五和星期六已經在那里,如果特定日期沒有數據,則像示例中那樣顯示 0。 我希望查詢的輸出如下所示:

我希望查詢輸出的示例

在此處輸入圖片說明

我試過這個:

SELECT
    HOUR(`VISIT_TIME`),
    COUNT(*)
FROM
    `JURL_Analytics`
WHERE
    `VISIT_TIME` >= DATE(NOW()) - INTERVAL 7 DAY AND `URL_ID` = 'westonsupermare'
GROUP BY
    HOUR(`VISIT_TIME`);

這是數據庫結構的示例

    `VISIT_ID`, `VISIT_TIME`
    --------------------------
    705, '2020-08-26 15:20:26'
    704, '2020-08-26 13:19:08'
    703, '2020-08-25 21:40:22'
    702, '2020-08-25 17:34:29'
    701, '2020-08-25 17:34:23'
    700, '2020-08-25 10:12:39'
    699, '2020-08-25 09:26:57'
    698, '2020-08-25 09:26:57'
    697, '2020-08-25 09:26:32'
    696, '2020-08-25 09:22:43'
    695, '2020-08-25 09:18:58'
    694, '2020-08-25 09:12:25'
    693, '2020-08-24 16:18:45'
    692, '2020-08-24 14:22:20'
    691, '2020-08-24 14:19:39'
    690, '2020-08-24 14:19:03'
    689, '2020-08-24 13:48:00'
    688, '2020-08-24 06:21:50'
    687, '2020-08-23 20:22:26'
    686, '2020-08-23 19:55:26'
    685, '2020-08-23 19:54:09'
    684, '2020-08-23 07:34:47'
    683, '2020-08-22 23:28:29'
    682, '2020-08-22 13:24:44'
    681, '2020-08-22 09:56:58'
    680, '2020-08-22 06:54:50'
    679, '2020-08-22 06:53:37'
    678, '2020-08-22 03:13:39'
    677, '2020-08-22 03:11:30'
    676, '2020-08-21 16:47:31'
    675, '2020-08-20 18:13:02'
    674, '2020-08-20 17:28:48'
    673, '2020-08-20 10:57:27'
    672, '2020-08-19 15:21:29'
    671, '2020-08-19 14:57:21'
    670, '2020-08-19 10:25:26'
    669, '2020-08-18 18:53:22'
    668, '2020-08-18 18:04:46'
    667, '2020-08-18 18:00:13'
    666, '2020-08-18 17:59:59'
    665, '2020-08-18 14:35:04'
    664, '2020-08-18 11:49:22'
    663, '2020-08-18 11:43:47'
    662, '2020-08-18 11:25:02'
    661, '2020-08-18 08:07:09'
    660, '2020-08-18 07:57:51'
    659, '2020-08-18 01:09:30'
    658, '2020-08-17 21:43:36'
    657, '2020-08-17 21:43:07'
    656, '2020-08-17 20:53:50'
    655, '2020-08-17 20:15:12'
    654, '2020-08-17 18:08:16'
    653, '2020-08-17 18:02:36'
    652, '2020-08-17 17:36:27'
    651, '2020-08-17 16:57:07'
    650, '2020-08-17 16:43:29'
    649, '2020-08-17 16:11:44'
    648, '2020-08-17 15:58:23'

如果您希望復制數據庫以有效地生成查詢,這里是表創建和一些示例數據。

CREATE TABLE `JURL_Analytics` (
  `VISIT_ID` int(8) NOT NULL,
  `VISIT_TIME` timestamp NOT NULL DEFAULT current_timestamp(),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `JURL_Analytics` (`VISIT_ID`, `VISIT_TIME`) VALUES
(705, '2020-08-26 15:20:26'),
(704, '2020-08-26 13:19:08'),
(703, '2020-08-25 21:40:22'),
(702, '2020-08-25 17:34:29'),
(701, '2020-08-25 17:34:23'),
(700, '2020-08-25 10:12:39'),
(699, '2020-08-25 09:26:57'),
(698, '2020-08-25 09:26:57'),
(697, '2020-08-25 09:26:32'),
(696, '2020-08-25 09:22:43'),
(695, '2020-08-25 09:18:58'),
(694, '2020-08-25 09:12:25'),
(693, '2020-08-24 16:18:45'),
(692, '2020-08-24 14:22:20'),
(691, '2020-08-24 14:19:39'),
(690, '2020-08-24 14:19:03'),
(689, '2020-08-24 13:48:00'),
(688, '2020-08-24 06:21:50'),
(687, '2020-08-23 20:22:26'),
(686, '2020-08-23 19:55:26'),
(685, '2020-08-23 19:54:09'),
(684, '2020-08-23 07:34:47'),
(683, '2020-08-22 23:28:29'),
(682, '2020-08-22 13:24:44'),
(681, '2020-08-22 09:56:58'),
(680, '2020-08-22 06:54:50'),
(679, '2020-08-22 06:53:37'),
(678, '2020-08-22 03:13:39'),
(677, '2020-08-22 03:11:30'),
(676, '2020-08-21 16:47:31'),
(675, '2020-08-20 18:13:02'),
(674, '2020-08-20 17:28:48'),
(673, '2020-08-20 10:57:27'),
(672, '2020-08-19 15:21:29'),
(671, '2020-08-19 14:57:21'),
(670, '2020-08-19 10:25:26'),
(669, '2020-08-18 18:53:22'),
(668, '2020-08-18 18:04:46'),
(667, '2020-08-18 18:00:13'),
(666, '2020-08-18 17:59:59'),
(665, '2020-08-18 14:35:04'),
(664, '2020-08-18 11:49:22'),
(663, '2020-08-18 11:43:47'),
(662, '2020-08-18 11:25:02'),
(661, '2020-08-18 08:07:09'),
(660, '2020-08-18 07:57:51'),
(659, '2020-08-18 01:09:30'),
(658, '2020-08-17 21:43:36'),
(657, '2020-08-17 21:43:07'),
(656, '2020-08-17 20:53:50'),
(655, '2020-08-17 20:15:12'),
(654, '2020-08-17 18:08:16')

這是您要找的東西嗎?

SELECT
  DATE(`VISIT_TIME`) as 'Date',
  SUM(IF(HOUR(`VISIT_TIME`) =  0, 1,0)) as '00:00 - 00:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  1, 1,0)) as '01:00 - 01:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  2, 1,0)) as '02:00 - 02:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  3, 1,0)) as '03:00 - 03:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  4, 1,0)) as '04:00 - 04:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  5, 1,0)) as '05:00 - 05:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  6, 1,0)) as '06:00 - 06:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  7, 1,0)) as '07:00 - 07:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  8, 1,0)) as '08:00 - 08:59',
  SUM(IF(HOUR(`VISIT_TIME`) =  9, 1,0)) as '09:00 - 09:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 10, 1,0)) as '10:00 - 10:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 11, 1,0)) as '11:00 - 11:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 12, 1,0)) as '12:00 - 12:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 13, 1,0)) as '13:00 - 13:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 14, 1,0)) as '14:00 - 14:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 15, 1,0)) as '15:00 - 15:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 16, 1,0)) as '16:00 - 16:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 17, 1,0)) as '17:00 - 17:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 18, 1,0)) as '18:00 - 18:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 19, 1,0)) as '19:00 - 19:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 20, 1,0)) as '20:00 - 20:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 21, 1,0)) as '21:00 - 21:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 22, 1,0)) as '22:00 - 22:59',
  SUM(IF(HOUR(`VISIT_TIME`) = 23, 1,0)) as '23:00 - 23:59'

FROM `JURL_Analytics`
GROUP BY DATE(`VISIT_TIME`);

結果與您的數據:MariaDB [bernd]>

SELECT
    ->   DATE(`VISIT_TIME`) as 'Date',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  0, 1,0)) as '00:00 - 00:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  1, 1,0)) as '01:00 - 01:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  2, 1,0)) as '02:00 - 02:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  3, 1,0)) as '03:00 - 03:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  4, 1,0)) as '04:00 - 04:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  5, 1,0)) as '05:00 - 05:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  6, 1,0)) as '06:00 - 06:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  7, 1,0)) as '07:00 - 07:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  8, 1,0)) as '08:00 - 08:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) =  9, 1,0)) as '09:00 - 09:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 10, 1,0)) as '10:00 - 10:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 11, 1,0)) as '11:00 - 11:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 12, 1,0)) as '12:00 - 12:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 13, 1,0)) as '13:00 - 13:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 14, 1,0)) as '14:00 - 14:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 15, 1,0)) as '15:00 - 15:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 16, 1,0)) as '16:00 - 16:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 17, 1,0)) as '17:00 - 17:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 18, 1,0)) as '18:00 - 18:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 19, 1,0)) as '19:00 - 19:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 20, 1,0)) as '20:00 - 20:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 21, 1,0)) as '21:00 - 21:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 22, 1,0)) as '22:00 - 22:59',
    ->   SUM(IF(HOUR(`VISIT_TIME`) = 23, 1,0)) as '23:00 - 23:59'
    ->
    -> FROM `JURL_Analytics`
    -> GROUP BY DATE(`VISIT_TIME`);
+------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
| Date       | 00:00 - 00:59 | 01:00 - 01:59 | 02:00 - 02:59 | 03:00 - 03:59 | 04:00 - 04:59 | 05:00 - 05:59 | 06:00 - 06:59 | 07:00 - 07:59 | 08:00 - 08:59 | 09:00 - 09:59 | 10:00 - 10:59 | 11:00 - 11:59 | 12:00 - 12:59 | 13:00 - 13:59 | 14:00 - 14:59 | 15:00 - 15:59 | 16:00 - 16:59 | 17:00 - 17:59 | 18:00 - 18:59 | 19:00 - 19:59 | 20:00 - 20:59 | 21:00 - 21:59 | 22:00 - 22:59 | 23:00 - 23:59 |
+------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
| 2020-08-17 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             2 |             2 |             0 |             0 |
| 2020-08-18 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             1 |             1 |             0 |             0 |             3 |             0 |             0 |             1 |             0 |             0 |             1 |             3 |             0 |             0 |             0 |             0 |             0 |
| 2020-08-19 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             1 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |
| 2020-08-20 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             1 |             0 |             0 |             0 |             0 |             0 |
| 2020-08-21 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |
| 2020-08-22 |             0 |             0 |             0 |             2 |             0 |             0 |             2 |             0 |             0 |             1 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |
| 2020-08-23 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             2 |             1 |             0 |             0 |             0 |
| 2020-08-24 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             3 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |
| 2020-08-25 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             6 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             2 |             0 |             0 |             0 |             1 |             0 |             0 |
| 2020-08-26 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             1 |             0 |             1 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |             0 |
+------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
10 rows in set (0.01 sec)

MariaDB [bernd]>

抱歉:在我的查詢中沒有 WHERE

WHERE
    `VISIT_TIME` >= DATE(NOW()) - INTERVAL 7 DAY AND `URL_ID` = 'westonsupermare'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM