我正在尝试返回一些在滚动12个月内分散的结果,例如:
MONTH IN OUT
January 210 191
February 200 111
March 132 141
April 112 141
May 191 188
etc...
如何在日期范围内分散结果,并在第一列中填充月份名称?
在MSSQL中,它将类似于:
SELECT COUNT(problem.problem_type = 'IN') AS IN,
COUNT(problem.problem_type = 'OUT') AS OUT,
DATEPART(year, DateTime) as Year,
DATEPART(month, DateTime) as Month
FROM problem
WHERE (DateTime >= dbo.FormatDateTime('2010-01-01'))
AND
(DateTime < dbo.FormatDateTime('2010-01-31'))
GROUP BY DATEPART(year, DateTime),
DATEPART(month, DateTime);
但这是针对Oracle数据库的,因此DATEPART和DateTime不可用。
我的问题表大致为:
problem_ID Problem_type IN_Date OUT_Date
1 IN 2010-01-23 16:34:29.0 2010-02-29 13:06:28.0
2 IN 2010-01-27 12:34:29.0 2010-01-29 12:01:28.0
3 OUT 2010-02-13 13:24:29.0 2010-09-29 15:04:28.0
4 OUT 2010-02-15 16:31:29.0 2010-07-29 11:03:28.0
使用:
SELECT SUM(CASE WHEN p.problem_type = 'IN' THEN 1 ELSE 0 END) AS IN,
SUM(CASE WHEN p.problem_type = 'OUT' THEN 1 ELSE 0 END) AS OUT,
TO_CHAR(datetime, 'YYYY') AS year,
TO_CHAR(datetime, 'MM') AS month
FROM PROBLEM p
WHERE p.DateTime >= TO_DATE('2010-01-01', 'YYYY-MM-DD')
AND p.DateTime < TO_DATE('2010-01-31', 'YYYY-MM-DD')
GROUP BY TO_CHAR(datetime, 'YYYY'), TO_CHAR(datetime, 'MM')
您还可以使用:
SELECT SUM(CASE WHEN p.problem_type = 'IN' THEN 1 ELSE 0 END) AS IN,
SUM(CASE WHEN p.problem_type = 'OUT' THEN 1 ELSE 0 END) AS OUT,
TO_CHAR(datetime, 'MM-YYYY') AS mon_year
FROM PROBLEM p
WHERE p.DateTime >= TO_DATE('2010-01-01', 'YYYY-MM-DD')
AND p.DateTime < TO_DATE('2010-01-31', 'YYYY-MM-DD')
GROUP BY TO_CHAR(datetime, 'MM-YYYY')
问题内容: 我有一个具有此架构的表 我正在尝试使查询工作显示每个月的总数。到目前为止,我已经尝试过DateDiff和嵌套选择,但都没有给我想要的东西。我认为这是最接近的: 但是当我应该获取值时,我只会得到空值。我想念什么吗? 问题答案: 您也可以尝试:
问题内容: 我的表格显示了各个国家/地区进行的搜索量以及进行搜索的日期,我想要一个查询来向我显示2012年和2013年每个月的搜索量,我需要为月份添加单独的列,年份和搜索次数。我以前使用过下面的查询,该查询返回每周进行的搜索量,但我想将其更改为仅2012和2013年每月进行的搜索。 问题答案: 只需使用MONTH()和YEAR()函数
问题内容: 我在Postgres服务器上有以下数据库表: 我想创建一个查询,给出了的按月份和年份如下列并对结果进行分组: 有没有简单的方法可以做到这一点? 问题答案: 应Radu的要求,我将解释该查询: :将“日期”属性转换为月的简短形式的定义格式。 :Postgresql的“提取”功能用于从“日期”属性中提取YYYY年。 :SUM()函数将所有“ Sales”值相加,并提供区分大小写的别名,并使
有没有一个简单的方法可以做到这一点?
问题内容: 我有一个包含会话事件时间戳的表。我想根据时间戳查询两个会话之间至少有10分钟的事件间隔时,我有多少会话。我可以使用MySql查询来计算会话数吗? 谢谢 问题答案: 在您的桌子上只有很少的信息,这对您来说只是一个基本的想法,但是您可以执行以下操作: 获取所有时间戳,并将它们与所有其他较大的时间戳合并,然后使用MIN将其缩小到下一个最大的时间戳。然后从中选择差异小于600秒的计数(假设使用
问题内容: 这是我的mysql收入表。 字段“日期”是标准sql日期。我执行此查询的目的是按月计算收入总和,如果某个月没有收入,则返回零。如果某个月没有任何收入,我想要零,因为我想在图表中显示这些数据。 这是查询。 但是我只会得到如下输出。如果其他月份没有值,则没有零。这是输出。 我希望上表中的其他月份和total_num为零。我怎样才能做到这一点?那里也有同样的问题。但没有有效的答案。 按月分组