多字段分组在mysql中,结果为0

时间:2018-05-29 10:04:12

标签: mysql group-by

假设我有以下表格

列表

post.dtd:36: parser error : expected '>'
<!ELEMENT A (#PCDATA) -- a link -- >
                  ^
post.dtd:36: parser error : Content error in the external subset
<!ELEMENT A (#PCDATA) -- a link -- >

昏暗的类别表

`listing` (
  `fact_listing_id`          INT(11) NOT NULL,
  `region_id`                INT(11) NOT NULL,
  `created_at_date_id`       INT(11) NOT NULL,
  `category_id`              INT(11) NOT NULL,
  PRIMARY KEY (`fact_listing_id`),
  )

昏暗区域表

`dim_category` (
  `category_id`             INT(11)      NOT NULL,
  `category_name`           VARCHAR(100) NOT NULL,
  `parent_category_id`      INT(11)      NULL,
  `parent_category_name`    VARCHAR(100) NULL,
  PRIMARY KEY (`category_id`),
)

昏暗的日期表

`dim_region` (
  `region_id`   INT(11) NOT NULL,
  `region_name` VARCHAR(80) DEFAULT NULL,
  PRIMARY KEY (`region_id`)
)

现在我想要一个查询来计算每个类别,每个地区和每一天的列表数量,通过分组三个字段,'region_id','category_id'和'date_id'

对于一个维度,我的意思是在一个维度上进行分组,它可以使用以下查询正确运行

`dim_date` (
  `date_id`       INT(11) NOT NULL, -- date_key
  `date`          DATE,
  `month`         INT(11) NULL,
  `day_of_month`  INT(11) NULL,
  `day_of_week`   INT(11) NULL,
  `week_of_month` INT(11) NULL,
  `year`          INT(11) NULL,
  `quarter`       INT(11) NULL,
  PRIMARY KEY (`date_id`)
)

但是当我尝试以下查询时,结果并不像我期望的那样

select
  count(fl.fact_listing_id) as Count
, dr.region_id
from fact_listing fl
     right  JOIN  dim_region dr on fl.region_id = dr.region_id
group by
dr.region_id;

我希望具有0行结果的行出现在输出结果中,总之,如果我有10个区域,20个类别和100天(在日期表中),结果应该是10 * 20 * 100行。

我的问题类似于MySQL Group by - Get columns with zero count ,但在多个字段(列)上进行分组。

0 个答案:

没有答案