2015-10-18 37 views
2

最新配合,我已经开始学习SQL数据库的东西,我很困惑这里。我必须创建一个每月有多少事件的表格。 我已经知道如何创建表,但剩下的?创建每月事件数量的新表格

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

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

+0

你在你的代码中提到DBMS服务器的三种不同的品牌。你在使用哪一个?他们并不完全相同。另外,您可能会发现阅读GROUP BY用法的一些示例很有帮助。 –

+0

对不起,我在这里新:)发生了一些错误 我在Dbeaver上工作 –

+0

Dbeaver是一个数据库客户端工具,可以与MySQL,Microsoft SQL Server,PostgreSQL,IBM db2,oracle等一起工作。但是SQL语言的细节取决于你使用的服务器,而不是dbeaver。 –

回答

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) 
+0

**感谢队友!正是我期待的!欢呼声 当我获得更多声望时,您将投票给您:)** –

+0

您可以通过EXTRACT(month FROM dateofcall)的顺序使用'by 1 order by 1'而不是'group by EXTRACT(month FROM dateofcall) –

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)代码

+0

**真棒!我现在只是在尝试同样的事情,并且你帮助我与团队合作:)!非常感谢@戴 我想投你的答案,但我在这里新,它似乎我需要更多的声誉** –

相关问题