簡體   English   中英

Mysql sql select 表每 1 小時

[英]Mysql sql select table each 1 hour

我有這張桌子:

--------------------------------------------------------
|Date                       |type|               |Value|
--------------------------------------------------------
|09/05/2022 00:03:04|        |Water|               |8.3|
--------------------------------------------------------
|09/05/2022 01:02:04|        |Water|               |3.3|
--------------------------------------------------------
|09/05/2022 02:13:04|        |Water|               |1.3|
--------------------------------------------------------
|09/05/2022 03:33:04|        |Water|               |3.3|
--------------------------------------------------------
|09/05/2022 04:43:04|        |Water|               |5.3|
--------------------------------------------------------
|09/05/2022 05:53:04|        |Water|               |6.3|
--------------------------------------------------------
|09/05/2022 06:22:04|        |Water|               |47.3|
--------------------------------------------------------
|09/05/2022 07:55:04|        |Water|               |48.3|
--------------------------------------------------------
|09/05/2022 08:03:14|        |Water|               |8.3|
--------------------------------------------------------
|09/05/2022 09:33:04|        |Water|               |9.3|
--------------------------------------------------------

我需要:

--------------------------------------------------------
|Date                       |type|               |Value|
--------------------------------------------------------
|09/05/2022 00:00:00|        |Water|               |8.3|
--------------------------------------------------------
|09/05/2022 01:00:00|        |Water|               |3.3|
--------------------------------------------------------
|09/05/2022 02:00:00|        |Water|               |1.3|
--------------------------------------------------------
|09/05/2022 03:00:00|        |Water|               |3.3|
--------------------------------------------------------
|09/05/2022 04:00:00|        |Water|               |5.3|
--------------------------------------------------------
|09/05/2022 05:00:00|        |Water|               |6.3|
--------------------------------------------------------
|09/05/2022 06:00:00|        |Water|               |47.3|
--------------------------------------------------------
|09/05/2022 07:00:00|        |Water|               |48.3|
--------------------------------------------------------
|09/05/2022 08:00:00|        |Water|               |8.3|
--------------------------------------------------------
|09/05/2022 09:00:00|        |Water|               |9.3|
--------------------------------------------------------
|09/05/2022 10:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 11:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 12:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 13:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 14:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 15:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 16:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 17:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 18:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 19:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 20:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 21:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 22:00:00|        |Water|               | |
--------------------------------------------------------
|09/05/2022 23:00:00|        |Water|               | |
--------------------------------------------------------

可能嗎?

我一天有一些數據......所以我需要知道從早上 0 點到下午 23 點我得到了哪些數據。 如果數據介於 2 小時之間,我需要在開始時擁有第一個數據。 例如,如果我在上午 00:05:00 獲得數據,我需要將數據存儲在 00:00:00。 因此,如果我有很多從 00:00:01 到 00:59:59 的數據,我只需要最后一個並在 00:00:00 顯示它。 所以我需要一天中每個小時的最后數據。 我該如何處理 mysql SQL? Tks

您可以使用日期格式:

SELECT DATE_FORMAT(column_name, '%m/%d/%Y %H') as datee, type, value
from TABLE
group by datee, type, value

簡要說明:

  1. Recursive hours ,這得到 0 到 23 小時的范圍
  2. yourdatetime ,這會從yourtable中獲取所有唯一日期,包括從 0 到 23 的時間
  3. output ,基本上yourtable在 where 子句中添加了列 (row_number) 的表,僅包含一天中同一小時出現的最后一條數據

分貝<>小提琴

WITH RECURSIVE hours AS (
    SELECT 0 AS level
    UNION ALL
    SELECT level + 1 AS value
    FROM hours
    WHERE hours.level <= 22
),
yourdatetime AS (
  SELECT date, level
  FROM (SELECT DISTINCT LEFT(date,10) AS date FROM yourtable) tmp
  CROSS JOIN hours
),
output AS (
  SELECT 
    type, value,
    DATE_FORMAT(STR_TO_DATE(date, '%m/%d/%Y %H:%i:%s'), '%m/%d/%Y %H:00:00') AS date,
    ROW_NUMBER() OVER(PARTITION BY DATE_FORMAT(STR_TO_DATE(date, '%m/%d/%Y %H:%i:%s'), '%m/%d/%Y %H:00:00') ORDER BY date DESC) AS rn
  FROM yourtable
)  
  
SELECT 
  DATE_FORMAT(STR_TO_DATE(CONCAT(t1.date, level), '%m/%d/%Y%k'), '%m/%d/%Y %H:00:00') AS date,
  COALESCE(t2.type, 'Water') AS type, 
  t2.value
FROM yourdatetime t1
LEFT JOIN output t2 ON DATE_FORMAT(STR_TO_DATE(CONCAT(t1.date, level), '%m/%d/%Y%k'), '%m/%d/%Y %H:00:00') = t2.date
WHERE rn = 1 OR rn IS NULL  
ORDER BY DATE_FORMAT(STR_TO_DATE(CONCAT(t1.date, level), '%m/%d/%Y%k'), '%m/%d/%Y %H:00:00')

暫無
暫無

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

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