Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle12c、sql、分组依据_Sql_Oracle_Group By_Count_Oracle12c - Fatal编程技术网

oracle12c、sql、分组依据

oracle12c、sql、分组依据,sql,oracle,group-by,count,oracle12c,Sql,Oracle,Group By,Count,Oracle12c,原始sql是: select c.col1,a.col2,count(1) from table_1 a,table_2 b.table_3 c where a.key =b.key and b.no = c.no group by c.col1,a.col2 having count(a.col2) >1; 输出: c.col1 a.col2 count(1) aa1 bb1 2 aa1 bb2 3 aa1 bb3 5 aa2 bb8

原始sql是:

select c.col1,a.col2,count(1) from table_1 a,table_2 b.table_3 c where a.key =b.key and b.no = c.no group by c.col1,a.col2 having count(a.col2) >1;
输出:

c.col1  a.col2 count(1)
aa1     bb1    2
aa1     bb2    3
aa1     bb3    5
aa2     bb8    1
aa2     bb1    4
我试着得到如下的输出集

c.col1   count(1)
aa1        10
aa2        5

如何编写sql?

我相信,如果您只需从select和group by中删除
col2
,就可以做到这一点。因为不再返回
col2
,所以还应该删除having语句。我认为应该是这样的:

选择
c、 col1,
计数(1)
从…起
表1 a,
表2 b,
表3 c
哪里
a、 钥匙
b.no=c.no
分组
c、 col1;

我希望这会有所帮助。

我相信,如果您只需将
col2
从select和group by中删除,就可以做到这一点。因为不再返回
col2
,所以还应该删除having语句。我认为应该是这样的:

选择
c、 col1,
计数(1)
从…起
表1 a,
表2 b,
表3 c
哪里
a、 钥匙
b.no=c.no
分组
c、 col1;
我希望这能有所帮助。

使用sum()和groupby来表示col1

select c.col1, sum(a.col2) as total
    from table_1 a,table_2 b.table_3 c 
    where a.key =b.key and b.no = c.no 
    group by c.col1;
输出--

c.col1   total
aa1        10
aa2        5
对col1使用sum()和group by

select c.col1, sum(a.col2) as total
    from table_1 a,table_2 b.table_3 c 
    where a.key =b.key and b.no = c.no 
    group by c.col1;
输出--

c.col1   total
aa1        10
aa2        5
一个“简单”的选项是将当前查询(重写为使用
JOIN
s,这是目前连接表的首选方式)用作内联视图:

  SELECT col1, SUM (cnt)
    FROM (  SELECT c.col1, a.col2, COUNT (*) cnt     --> your current query begins here
              FROM table_1 a
                   JOIN table_2 b ON a.key = b.key
                   JOIN table_3 c ON c.no = b.no
          GROUP BY c.col1, a.col2
            HAVING COUNT (a.col2) > 1)               --> and ends here
GROUP BY col1;

或者,从
选择中删除
a.col2

  SELECT c.col1, COUNT (*) cnt
    FROM table_1 a
         JOIN table_2 b ON a.key = b.key
         JOIN table_3 c ON c.no = b.no
GROUP BY c.col1, a.col2
  HAVING COUNT (a.col2) > 1;
一个“简单”的选项是将当前查询(重写为使用
JOIN
s,这是目前连接表的首选方式)用作内联视图:

  SELECT col1, SUM (cnt)
    FROM (  SELECT c.col1, a.col2, COUNT (*) cnt     --> your current query begins here
              FROM table_1 a
                   JOIN table_2 b ON a.key = b.key
                   JOIN table_3 c ON c.no = b.no
          GROUP BY c.col1, a.col2
            HAVING COUNT (a.col2) > 1)               --> and ends here
GROUP BY col1;

或者,从
选择中删除
a.col2

  SELECT c.col1, COUNT (*) cnt
    FROM table_1 a
         JOIN table_2 b ON a.key = b.key
         JOIN table_3 c ON c.no = b.no
GROUP BY c.col1, a.col2
  HAVING COUNT (a.col2) > 1;

有陈述是重点~~有陈述是重点~~在这种情况下,您可以添加以下内容:having count(1)>1在这种情况下,您可以添加以下内容:having count(1)>1