Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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
Oracle Top Max Count结果Sql查询_Sql_Oracle_Subquery - Fatal编程技术网

Oracle Top Max Count结果Sql查询

Oracle Top Max Count结果Sql查询,sql,oracle,subquery,Sql,Oracle,Subquery,我有一个Oracle查询,它计算某些内容出现的次数以及按详细信息分组的次数。 与此类似: SELECT COUNT(1) AS Num_Found, Column_A, Column_B, Column_C FROM Some_Table GROUP BY Column_A, Column_B, Column_C 我得到了这样的结果 |-----------|----------|----------|----------| | Num_Found | Column_A | Column

我有一个Oracle查询,它计算某些内容出现的次数以及按详细信息分组的次数。 与此类似:

SELECT COUNT(1) AS Num_Found, Column_A, Column_B, Column_C
FROM Some_Table
GROUP BY Column_A, Column_B, Column_C   
我得到了这样的结果

|-----------|----------|----------|----------|
| Num_Found | Column_A | Column_B | Column_C |
| 145       | Acct1    | SubAcct1 | XXXX     |
| 6         | Acct1    | SubAcct1 | yyyy     |
| 346       | Acct2    | SubAcct2 | qwert    |
| 97        | Acct2    | SubAcct2 | plkmn    |
|-----------|----------|----------|----------|
我不知道如何根据找到的Num_的最大计数获取列A、列B、列C。这样我就可以得到这样的结果:

|-----------|----------|----------|----------|
| Num_Found | Column_A | Column_B | Column_C |
| 145       | Acct1    | SubAcct1 | XXXX     |
| 346       | Acct2    | SubAcct2 | qwert    |
|-----------|----------|----------|----------|

你想这么做吗

SELECT t.*
FROM (SELECT COUNT(1) AS Num_Found, Column_A, Column_B, Column_C
      FROM Some_Table
      GROUP BY Column_A, Column_B, Column_C 
      ORDER BY COUNT(1) DESC
     ) t
WHERE rownum <= 2 ;

您按三列进行分组,并且在结果组中,您只希望保留两列组合中计数最高的一列

可以通过以下方式完成:

select num_found, column_a, column_b, column_c
from (
  SELECT COUNT(*) AS Num_Found, Column_A, Column_B, Column_C
       , row_number() over (
            partition by column_a, column_b
            order by count(*) desc
         ) rn
  FROM Some_Table
  GROUP BY Column_A, Column_B, Column_C
)
where rn = 1

请注意,如果对于相同的列a、列b组合,两个不同的列c值具有相同的最高计数,那么输出中的列c值将是随机的。

试试这个。根据您想要的输出,看起来您想要按列a对结果进行分区

挑选 找到数量,列a,列b,列c 从…起 按列aas max\u num选择在分区上找到的*maxnum 从…起 表a
其中num=max_num

否。因为这只会给我最上面的两行。我想做的是获取列A和列B的最大计数,这样我就可以在其他地方使用列C。只是为了让我们清楚一点,我想做的是获取列A和列B的最大计数,这样我就可以在其他地方使用列C。在我最初的查询中,我可能有十行,列_A=Acct1,列_B=SubAcct1,但所有列的结果都不同。所以我需要找到列A和列B最常见的结果