Plsqldeveloper Count distinct在Oracle SQL Developer中不起作用

Plsqldeveloper Count distinct在Oracle SQL Developer中不起作用,plsqldeveloper,Plsqldeveloper,我需要在一列中计算不同的日期,但我不想按此分组 数据源表: ID zip5 date volume 11 11111 01/03/16 5 12 11111 01/03/16 6 13 11111 01/04/16 7 我的代码: Select zip5, count(ID), count(distinct (date)), sum(volume), from table group by zip5 期望输出: zip5

我需要在一列中计算不同的日期,但我不想按此分组

数据源表:

ID   zip5    date       volume  
11   11111   01/03/16   5  
12   11111   01/03/16   6
13   11111   01/04/16   7
我的代码:

Select zip5, count(ID), count(distinct (date)), sum(volume), 
from table
group by zip5
期望输出:

zip5   count(ID)  count(distinct (date))  sum(volume)
11111          2                       1           11
11111          1                       1            7
然而,我得到的是:

zip5   count(ID)  count(distinct (date))  sum(volume)
11111          3                       3           18

要获得所需的输出,只需在GROUPBY表达式中添加DATE列

Select zip5, count(ID), count(distinct ("DATE")), sum(volume)
from "TABLE"
group by zip5,"DATE"
order by 1,2;

      ZIP5  COUNT(ID) COUNT(DISTINCT("DATE")) SUM(VOLUME)
---------- ---------- ----------------------- -----------
     11111          1                       1           7 
     11111          2                       1          11 

您可以按分组,即在DISCTINTCT行中选择,甚至是不在选择列表中的列。

最有可能的问题是,您面临的问题是日期列有一个时间分量——唉,当您从表中选择时,它不会显示出来

您可以截断日期以删除时间组件。所以试试这个:

Select zip5, count(ID), count(distinct trunc(date)), sum(volume), 
from table
group by zip5;

您已经为三个相互竞争的数据库产品添加了标签。您是否都在使用这三行呢?如果您按zip5分组,您不能期望有什么不同,您所提供的输入的预期结果是第11111 3 18行。您还将其标记为PL/SQL Developer,但标题中有SQL Developer。客户机在这里并不重要,但如果您清楚您实际使用的是哪个客户机和数据库,这会有所帮助。要扩展@Paolof76的评论,如果您在GROUP BY中包含date列,您可能会得到预期的结果。您不想按它分组吗?但这会给你你需要的答案!林诺夫。非常感谢你!。它起作用了。为什么日期数据格式很重要?你是说数据中没有显示的分/秒吗?@MichaelLi。对的默认情况下,Oracle不显示日期列的时间组件。