在两个不同的表 Oracle 之间计数

Counting between two different tables Oracle

我有两个 ORACLE 表,FOLDER 和 FILES。每个文件夹包含几个文件。 我正在尝试获取文件夹数量的文件数量。包含文件数 y 的文件夹数 x。 例如50个文件夹包含10个文件,35个文件夹包含8个文件... 我可以在查询中得到一些帮助吗:

select count(fl.id_folder) ,count(fi.fileID) from FOLDER fl inner join FILES fi on fl.id_folder=fi.fileID group by fl.id_folder;

您可以使用两个级别的聚合。假设 table files 有一个名为 id_folder 的列,你会这样做:

select cnt_files, count(*) cnt_folders
from (
    select count(*) cnt_files
    from files 
    group by id_folder
) t
group by cnt_files

我们可以使用 group by 编写查询,如下所示:

Select cnt_files, count(1) as num_of_folders
from
(select fl.id_folder, count(fi.fileid) as cnt_files
  from FOLDER fl 
  Left join FILES fi on fl.id_folder=fi.fileID
Group by fl.id_folder)
Group by cnt_files;

注意:我已经使用LEFT JOIN考虑了所有文件夹(里面有和没有文件)