如何在我的数据集中获得每个月的 MAX/MIN 函数?
Posted
技术标签:
【中文标题】如何在我的数据集中获得每个月的 MAX/MIN 函数?【英文标题】:How to get MAX/MIN function for each month in my data set? 【发布时间】:2019-04-10 20:19:06 【问题描述】:我需要提供使用数据,并且需要按月汇总。
在我的代码中,我只查看 2018 年 1 月的数据,因此根据当前数据集找到 Max 和 Min 非常简单。如果我要在 2018 年全年扩展它,我目前会显示全年的 MAX 和 MIN。
SELECT DISTINCT
bi_vwn_co_acct,
bi_consumer_view_1.bi_format_name,
bi_srv_loc.bi_city,
bi_srv_loc.bi_st,
bi_srv_loc.bi_x_coord,
bi_srv_loc.bi_y_coord,
bi_interval_rdgs.bi_mtr_nbr,
MAX (bi_interval_rdgs.bi_rdg),
MIN (bi_interval_rdgs.bi_rdg),
(MAX (bi_interval_rdgs.bi_rdg) - MIN (bi_interval_rdgs.bi_rdg))
AS monthusage
FROM bi_srv_loc
INNER JOIN bi_srv_link
ON bi_srv_loc.bi_srv_loc_nbr = bi_srv_link.bi_srv_loc_nbr
INNER JOIN bi_type_service
ON bi_srv_link.bi_srv_loc_nbr = bi_type_service.bi_srv_loc_nbr
INNER JOIN bi_consumer_view_1
ON bi_type_service.bi_acct = bi_consumer_view_1.bi_vwn_co_acct
INNER JOIN bi_interval_rdgs
ON bi_srv_link.bi_mtr_nbr = bi_interval_rdgs.bi_mtr_nbr
WHERE bi_interval_rdg_dt_tm >= '01-JAN-2018'
AND bi_interval_rdg_dt_tm <= '31-JAN-2018'
AND bi_type_service.bi_srv_stat_cd IN ('1',
'7',
'18',
'21',
'22',
'30')
GROUP BY bi_consumer_view_1.bi_vwn_co_acct,
bi_consumer_view_1.bi_format_name,
bi_srv_loc.bi_x_coord,
bi_srv_loc.bi_y_coord,
bi_interval_rdgs.bi_mtr_nbr,
bi_srv_loc.bi_city,
bi_srv_loc.bi_st
我希望得到一个看起来像这样的数据列表:
ACCT1 JAN MONTHUSAGE: 10
ACCT1 FEB MONTHUSAGE: 13
ACCT1 MAR MONTHUSAGE: 12
...
ACCT2 JAN MONTHUSAGE: 23
ACCT2 FEB MONTHUSAGE: 18
我的代码中显然显示了更多字段,但总的来说这是我所追求的。不知何故,我需要能够通过给定的日期范围并按月划分。任何帮助或指导将不胜感激!
【问题讨论】:
向我们展示一些示例表数据和预期结果。全部为格式化文本,而不是图像。 (开始之前先看看***.com/help/mcve。) 【参考方案1】:将您的查询调整为 GROUP BY MONTH(BI_INTERVAL_RDG_DT_TM), YEAR(BI_INTERVAL_RDG_DT_TM )
【讨论】:
【参考方案2】:我不确定我是否理解哪一列(在所有列中)代表数据值,所以 - 这是一个基于 Scott 的示例架构的示例,它可能会给你一些想法 - 提取 月份和年份信息超出日期列(例如,通过使用TO_CHAR
函数)并将其包含在GROUP BY
子句中。
SQL> select to_char(e.hiredate, 'yyyymm') mon,
2 min(e.sal) minsal,
3 max(e.sal) maxsal
4 from emp e
5 group by to_char(e.hiredate, 'yyyymm')
6 order by to_char(e.hiredate, 'yyyymm');
MON MINSAL MAXSAL
------ ---------- ----------
198012 800 800
198102 1250 1600
198104 2975 2975
198105 2850 2850
198106 2450 2450
198109 1250 1500
198111 5000 5000
198112 950 3000
198201 1300 1300
198212 3000 3000
198301 1100 1100
11 rows selected.
SQL>
【讨论】:
以上是关于如何在我的数据集中获得每个月的 MAX/MIN 函数?的主要内容,如果未能解决你的问题,请参考以下文章