创建包含每月事件数的新表

时间:2015-10-18 21:28:40

标签: sql postgresql dbeaver

怎么了配偶,我已经开始学习SQL数据库的东西,我在这里很困惑。我必须创建一个包含每月事件数量的表格。 我已经知道如何创建表,但其余的?

SELECT
    EXTRACT(month FROM dateofcall) AS x,
    incidentnumber,
    dateofcall
FROM
    incidents
GROUP BY
    incidentnumber,
    x
ORDER BY
    x ASC;

但它没有给我每月事件数的结果。 =(

2 个答案:

答案 0 :(得分:1)

SELECT
    EXTRACT(month FROM dateofcall) AS theMonth,
    COUNT(*) AS theNumberOfIncidents
FROM
    incidents
GROUP BY
    EXTRACT(month FROM dateofcall)
ORDER BY
    theMonth

您的原始查询没有计算任何内容。您还按incidentNumber进行分组,我认为这是您的主键,这是一种无意义的操作。

由于SQL语言中的怪癖,您无法在GROUP BY语句中使用列别名,这就是您需要复制EXTRACT(month FROM dateofcall)代码的原因。

答案 1 :(得分:1)

您的GROUP BY子句中的项目看起来太多了,而您没有计算您的事件,只是显示其详细信息。

试试这个:

SELECT EXTRACT(month FROM dateofcall) AS x,
       COUNT(*) AS incidents    
FROM
   incidents
GROUP BY
    EXTRACT(month FROM dateofcall)
ORDER BY
    EXTRACT(month FROM dateofcall)