一年中给出的SQL测试计数

时间:2014-10-10 23:39:49

标签: sql database count sum

我试图在一年内从特定的表格中进行一系列测试。这就是我到目前为止所做的:

SELECT  DISTINCT TO_CHAR(test_date, 'YYYY') AS Year, SUM(yearCount) 
FROM(
            SELECT COUNT(test_date) AS yearCount
            FROM     test_record
), test_record
GROUP BY test_record.test_date
ORDER BY Year ASC;

这给了我输出:

YEAR SUM(YEARCOUNT)
---- --------------
1958         12
1991         12
1996         12
1998         12
2000         12
2001         12
2010         12
2012         12
2013         12

现在,我理解我的问题在于:SELECT COUNT(test_date) AS yearCount,因为我在表中有12个条目,所以它显然给出了表中条目数的计数。我需要每年给出的测试次数,即输出应如下所示:

YEAR SUM(YEARCOUNT)
---- --------------
1958         1
1991         1
1996         1
1998         1
2000         1
2001         1
2010         1
2012         1
2013         4

所以基本上我的问题归结为:我如何按日期列中的年份计算? (我相信我使用的是ORACLE 7)

编辑:感谢以下帮助,我能够得到我想要的输出,但是他们都有点错误"所以我没有接受它们(对不起,如果那样的话)#39; sa Faux pas)。这是我的剧本:

SELECT      TO_CHAR(test_date,    'YYYY') AS Year, COUNT(test_date)
FROM        test_record
GROUP BY    TO_CHAR(test_date, 'YYYY')
ORDER BY    Year ASC;

2 个答案:

答案 0 :(得分:1)

您想按年份而不是考试日期进行分组。

Select count(*), to_date('YYYY',test_data) as year
From test_record
Group by to_date('YYYY',test_date)

答案 1 :(得分:1)

您可以单独进行分组,不需要子查询

  SELECT  TO_CHAR(test_date,    'YYYY') AS Year, COUNT(test_date)
  GROUP BY TO_CHAR(test_date, 'YYYY')
 ORDER BY Year ASC;