无法通过涉及count(不同col)的结果来理解Oracle组

时间:2015-06-07 07:24:21

标签: sql oracle

当我使用 if ($show_result){ ?> <table class="table table-bordered table-striped"> <tr> <th>id</th> <th>date</th> <th>items</th> <th>description</th> <th>cost</th> <th>person</th> </tr> <?php if ($row_count == 0) {?> <tr> <td colspan="6"> <?php echo "no data found"; ?> </td> </tr> <?php } } else{ } 执行简单的oracle SQL查询时,它会给我一些数字,当执行另一列的分组时,它会给出更大的数字。怎么样?

count(distinct column x)

这是另一个没有分组的

SELECT                                                distinct branch_no,
      COUNT (DISTINCT member_no)
  FROM subscriptions                                       
 WHERE       
           su_sub_status NOT IN ('N', 'C')
       AND TRUNC (sub_Date) <= TO_DATE ('31/01/2014', 'dd/mm/yyyy')
       AND TRUNC (end_date) >= TO_DATE ('31/01/2014', 'dd/mm/yyyy')

group by /* rollup */ (branch_no)

1 个答案:

答案 0 :(得分:4)

对于此示例数据:

grp1   grp2   value
1      1      1
2      1      1
3      2      2

如果按grp1分组,则会有三个小组,每个小组有一个count(distinct value)。共计3个。

如果按grp2分组,则第一个组(grp2 = 1)的count(distinct value)为{1}。第二组(grp2 = 2)也将有一个count(distinct value)。总计最多2个。

正如您所看到的,对于具有不同总和count(distinct value)的不同群体,没有任何不一致。