Oracle SQL:显示单个计数即使存在重复项

时间:2016-06-09 15:05:02

标签: sql oracle duplicates

这是我在这里的第一个问题,如果我违反任何规则,请原谅我。

以下是我需要知道的事情:

如何创建一个Oracle SQL查询,即使结果中有重复项,也会显示一些独特的计数?

示例:客户表格包含各种客户的购买清单。该表列出了客户ID,名称,购买类别(即硬件,工具,季节性)等。查询的结果需要显示每个客户ID,客户名称和购买类别,以及单个客户的计数。因此John Smith的客户ID 1已经在每个部门进行了购买。如果我对客户进行了统计,他会三次购买,但我还需要一个专栏来计算客户一次。为其他部门返回的其他行中的计数应显示为0或Null。

我通常通过拉动所有内容并导出到excel来实现此目的。我添加了一个在ID上使用IF公式的列,仅在第一次出现客户IE时显示1:IF(A3 = A2,0,1)(如果a3与A2相同,则显示0,如果它与A2不同,然后显示1)。这将为报告的一部分提供一个独特的客户数量,并且仍然会显示客户在报告的另一部分中购买了多少客户。

我想直接在SQL查询中执行此操作,因为我需要完成大量数据,并且在Excel中添加任何公式都会使表格变得庞大。这样也可以更容易地在ACCESS中托管查询结果,因此excel可以从那里获取它。

我试图找到一段时间的解决方案,但在Google上进行的任何搜索通常会返回有关如何从表中删除重复项或如何计算表中重复项的结果。

我很抱歉,如果这是一个很长的问题,但我想要通过,所以我不会浪费任何人的时间在第四个评论上(我已经在这里多次看到这个以及在OP问的时候一个非常神秘的问题,希望每个人都能在没有进一步解释的情况下理解它们。)

1 个答案:

答案 0 :(得分:2)

可以在计数中使用distinct来仅计算字段的唯一值。

self.rightAnswer = function(elm) {

    $("#" + elm).fadeOut(1500, function() {
        if (self.level() == 5 || self.level() == 10) {

        startSound('wrongsound2', false);

        $("#" + elm).css('background', 'url(boxright.png) no-repeat 0 0').fadeIn(800, function() {
                self.money($(".active").data('amt'));
                if(self.level() + 1 > 15) {
                    $("#game").fadeOut('slow', function() {
                        $("#game-over").html('You Win!');
                        $("#game-over").fadeIn('slow');
                    });
                } else {
                    self.level(self.level() + 1);
                    $("#" + elm).css('background','url(box.png) no-repeat 0 0');
                    $("#" + elm).hover(function(){
                        $(this).css("background", "url(boxhover.png) no-repeat 0 0");
                    }, function(){
                        $(this).css('background','url(box.png) no-repeat 0 0');
                        });
                    $("#answer-one").show();
                    $("#answer-two").show();
                    $("#answer-three").show();
                    $("#answer-four").show();
                    self.transitioning = false;
                }
            });
            }

此类方法不仅限于Oracle RDBMS。