2

Whats up 伙计们,我已经开始学习 SQL 数据库的东西了,我在这里很困惑。我必须创建一个包含每月事件数的表。我已经知道如何创建表,但其余的呢?

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

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

4

2 回答 2

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)代码的原因。

于 2015-10-18T21:41:31.193 回答
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)
于 2015-10-18T21:44:43.360 回答