按月获取minen max值组之间的差异

l7mqbcuq  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(250)

我有一个有两列的数据库。

Column 1: named as datum (datetime format)
Column 2: named as Energie (decimal format).

2019-01-01 14:17:07;3419.699951
2019-01-01 14:48:38;3419.800049
2019-01-01 15:12:35;3419.900146
2019-01-01 15:34:26;3420.100098
2019-01-01 15:58:10;3420.300049
2019-01-01 16:21:36;3420.5
2019-01-01 17:20:03;3420.699951
2019-01-01 17:32:11;3420.800049
2019-01-01 17:56:17;3421
2019-01-02 04:40:50;3421.100098
2019-01-02 05:46:28;3421.299805
2019-01-02 05:55:49;3421.400146
2019-01-02 06:41:54;3421.599854
2019-01-02 07:03:16;3421.700195
2019-01-02 07:26:59;3421.899902
2019-01-02 07:39:02;3422
2019-01-02 07:50:57;3422.100098
2019-01-02 08:50:53;3422.300049
2019-01-02 09:12:43;3422.5
2019-01-02 09:24:47;3422.600098

我想每月计算第2列中最小值和最大值之间的差值,并对每月的结果进行分组。
到目前为止,我有下面的sql语句是什么导致了每天的差异。

select  cast(datum as date) AS datum, (max(energie) - min(energie)) as Energie_MWh
from    `01` as p
group by 
cast(datum as date)
z2acfund

z2acfund1#

如果您正在获取每天的数据,并且您需要每月的数据,那么您可以使用 DATE_FORMAT(cast(datum as date), "%Y%m") 而不是 cast(datum as date)

vpfxa7rd

vpfxa7rd2#

这些行适用于mysql:

select DATE_FORMAT(datum, "%Y%m")  as date_month,
   max(energy)                 as max_engery,
   min(energy)                 as min_energy,
   (max(energy) - min(energy)) as diff
from energy_table
group by date_month;

但我想知道这是否是能源使用的真正问题?
如果表太大,则会导致性能问题。

qv7cva1a

qv7cva1a3#

mysql有非常方便的 YEAR_MONTH 的选项 extract() ,因此您可以使用:

select extract(year_month from datum) as yyyymm,
       (max(energie) - min(energie)) as Energie_MWh
from `01` as p
group by yyyymm;

相关问题