当前位置: 首页 > 面试题库 >

该月的每日平均值(需要每月的天数)

华谭三
2023-03-14
问题内容

我有一张表,如下所示:

CREATE TABLE counts
(
    T TIMESTAMP NOT NULL,
    C INTEGER NOT NULL
);

我从中创建以下视图:

CREATE VIEW micounts AS 
SELECT DATE_TRUNC('minute',t) AS t,SUM(c) AS c FROM counts GROUP BY 1;

CREATE VIEW hrcounts AS
SELECT DATE_TRUNC('hour',t) AS t,SUM(c) AS c,SUM(c)/60 AS a
FROM micounts GROUP BY 1;

CREATE VIEW dycounts AS
SELECT DATE_TRUNC('day',t) AS t,SUM(c) AS c,SUM(c)/24 AS a
FROM hrcounts GROUP BY 1;

现在,当我想创建每月计数以了解如何将每日总和除以得出平均列a(即特定月份中的天数)时,就会出现问题。

我知道要在PostgreSQL中获得成功,您可以:

SELECT DATE_PART('days',DATE_TRUNC('month',now())+'1 MONTH'::INTERVAL-DATE_TRUNC('month',now()))

但是我不能使用now(),我必须以某种方式让它知道分组完成的月份。任何建议,即什么应该取代 ??? 在此视图中:

CREATE VIEW mocounts AS
SELECT DATE_TRUNC('month',t) AS t,SUM(c) AS c,SUM(c)/(???) AS a
FROM dycounts
GROUP BY 1;

问题答案:

更快,更短一点,您得到的是天数,而不是interval

SELECT EXTRACT(day FROM date_trunc('month', now()) + interval '1 month'
                                                   - interval '1 day')

可以将多个单位合并为一个interval值。因此我们可以使用'1 mon - 1 day'

SELECT EXTRACT(day FROM date_trunc('month', now()) + interval '1 mon - 1 day')

monmonthmonths对月份单位使用相同的html" target="_blank">方法。)

每日总和 除以当月的天数(原始问题):

SELECT t::date AS the_date
     , SUM(c)  AS c
     , SUM(c) / EXTRACT(day FROM date_trunc('month', t::date)
                               + interval '1 mon - 1 day') AS a
FROM   dycounts
GROUP  BY 1;

每月总和 除以 当月 的天数(更新的问题):

SELECT DATE_TRUNC('month', t)::date AS t
      ,SUM(c) AS c
      ,SUM(c) / EXTRACT(day FROM date_trunc('month', t)::date
                               + interval '1 mon - 1 day') AS a
FROM   dycounts
GROUP  BY 1;

GROUP BY如果要使用单个查询级别,则必须重复该表达式。

或使用 子查询

SELECT *, c / EXTRACT(day FROM t + interval '1 mon - 1 day') AS a
FROM  (
   SELECT date_trunc('month', t)::date AS t, SUM(c) AS c
   FROM   dycounts
   GROUP  BY 1
   ) sub;


 类似资料:
  • 问题内容: 我正在尝试检索当月的哪一天。 例如今天是2011年8月29日。 我想做的只是获取天数,例如29或30。它是每月的哪一天。 我将如何去做? 问题答案: 您需要获取一个Calendar实例并将其作为月份中的某天 您还可以获取DAY_OF_WEEK,DAY_OF_YEAR,DAY_OF_WEEK_IN_MONTH等。

  • Python3 实例 以下代码通过导入 calendar 模块来计算每个月的天数: # Filename : test.py # author by : www.runoob.com import calendar monthRange = calendar.monthrange(2016,9) print(monthRange) 执行以上代码输出结果为: (3, 30) 输出的是一个元

  • 我的数据如下: 我想计算每个组每年日期之间的平均天数。我尝试了以下代码,但收到以下错误: 我的日期列的类别是日期。

  • 我在研究这个问题时发现的几乎所有内容都是针对Log4J1.x的,并讨论了一个似乎在2.0中不存在的datePattern参数。 下面是我的log4j2.xml文件: 我正在将信息和以上内容写入日志文件,并将调试写入控制台(目前)。这些文件被写得很好,但它们似乎每天都在滚动(这似乎是默认的)。

  • 我有一个netCDF文件(. nc),其中包含16年(1998-2014年)的日降水量(5844层)。3个维度是时间(大小5844)、纬度(大小19)和经度(大小20)R中是否有一种简单的方法来计算每个rastercell: < li >每月 到目前为止,我已经: 我的第一个挑战是计算每个光栅单元的月平均值。我不确定在牢记最终目标(累积比较)的同时,如何最好地进行。我怎样才能轻松地访问某个月的几天

  • 似乎不能处理一个数字的月份中的某一天: 在此示例中,正确解析日期,但引发异常。如果我使用零填充日期,例如“05/03/1969”,则两者都起作用。但是,如果每月的日期或每年的月份都是个位数,则将引发异常。 什么是格式来解析一个数字和两位数的月份和一年中的月份?