【问题标题】:SELECT MAX MIN value of temperature CURRENT DAY but last YEARS from ALL historySELECT MAX MIN value of temperature CURRENT DAY but last YEARS from ALL history
【发布时间】:2020-06-26 12:02:07
【问题描述】:

我想向您寻求有关 SQL 的帮助。 我有 4 列的数据库。 (时间,温度,嗡嗡声,按) 在这张表中是来自我的气象站的数据。 现在这个表中有 110000 行,其中包含过去 3 年的记录。 我想像今天一样在同一天从过去几年中获取温度的 MAX 和 MIN 值。

我知道如何在同一天获取去年的所有临时数据,但我不知道下一步是什么:-D

SELECT temp 
FROM `table_name` 
WHERE (
    YEAR(time) < YEAR(CURDATE()) 
    AND MONTH(time) = MONTH(CURDATE()) 
    AND DAY(time) = DAY(CURDATE())
)

对不起,我的英语不好。

谢谢

【问题讨论】:

  • 您好 Bebeno,欢迎来到 Stack Overflow。 SQL 日期函数是特定于供应商的。请用您正在使用的数据库标记您的问题:mysql、sql-server、oracle...
  • table_name 是某个表名的占位符吗?否则,我不知道反引号是干什么用的。
  • yes table_name 是表名的占位符。原始表名是U_sokolika。它不是英文的。出于这个原因,我使用了 table_name。谢谢

标签: mysql date group-by max min


【解决方案1】:

您可以使用日期算术和聚合:

select min(temp) min_temp, max(temp) max_temp
from table_name
where 
    year(time) < year(current_date) 
    and month(time) = month(current_date) 
    and day(time) = day(current_date)

如果你想要按年份的结果:

select year(time) yr, min(temp) min_temp, max(temp) max_temp
from table_name
where 
    year(time) < year(current_date) 
    and month(time) = month(current_date) 
    and day(time) = day(current_date)
group by year(time)
order by year(time)

【讨论】:

  • 嗨。感谢您的回答。这个 sql 有效,但它不是我要找的。此 sql 仅从所有年份低于当年的行中获取最大值和最小值,但我希望得到类似于 2019 年的结果 max = ..., min= ... ; 2018 最大值=...,最小值=...; 2017 最大值=...最小值=...等等。感谢您的帮助
猜你喜欢
  • 2017-05-21
  • 2022-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
相关资源
最近更新 更多