选择数据之间的数据错误ORA-00937

时间:2016-06-07 11:04:43

标签: sql oracle

我需要按日期获得人数。

我有这个错误:

  

ORA-00937不是单组组功能

查询如下

SELECT DISTINCT DATA,count(PERSON)
FROM table
where DATA  >= TO_DATE ('01/05/2016', 'DD/MM/YYYY') AND DATA <= TO_DATE ('31/05/2016', 'DD/MM/YYYY');
GROUP BY DATA
ORDER BY DATA

我不明白出了什么问题?

1 个答案:

答案 0 :(得分:4)

问题是WHERE子句末尾的分号:

SELECT t.DATA, count(PERSON)
FROM table t
WHERE t.DATA  >= DATE '2016-05-01' AND t.DATA <= DATE '2016-05-31'
GROUP BY t.DATA
ORDER BY t.DATA;

注意:

    {li> SELECT DISTINCT几乎不需要GROUP BY
  • 我更喜欢YYYY-MM-DD的ANSI / ISO标准格式的日期。 Oracle使用DATE关键字支持此功能。
  • 我建议使用表别名和限定列名。
  • 在Oracle中,请注意日期比较。如果您想要5月份的数据,那么t.DATA >= DATE '2016-05-01' AND t.DATA < DATE '2016-06-01'会更安全。日期可能有时间成分。