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不显示日期列的时间组件。