mysql查询统计数量
CREATETABLE`pl_org_region`(`region_id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'区域自增ID',`pa...
CREATE TABLE `pl_org_region` (
`region_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '区域自增ID',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父区域ID 对应自身数据表 0表示顶级区域',
`region_sn` varchar(10) NOT NULL COMMENT '区域编号',
`region_name` varchar(20) NOT NULL COMMENT '区域名称',
`comments` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`region_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='区域表'
CREATE TABLE `pl_store` (
`store_id` int(11) NOT NULL COMMENT '门店自增ID',
`store_sn` varchar(10) NOT NULL COMMENT '门店编号',
`region_id` int(11) NOT NULL COMMENT '区域ID 对应org_region表',
`region_name` varchar(15) NOT NULL COMMENT '区域名称 对应org_region表',
PRIMARY KEY (`store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='门店表'
如建表语句的2张表。
如何统计当前区域下的门店数量?为0 也需要显示区域信息处理,谢谢!
SELECT p.region_id,COUNT(p.region_id) AS cnt,r.* FROM pl_org_region r, pl_store p WHERE r.region_id=p.region_id GROUP BY p.region_id;
这样查询只显示出来统计结果不为0 的情况。。 展开
`region_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '区域自增ID',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父区域ID 对应自身数据表 0表示顶级区域',
`region_sn` varchar(10) NOT NULL COMMENT '区域编号',
`region_name` varchar(20) NOT NULL COMMENT '区域名称',
`comments` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`region_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='区域表'
CREATE TABLE `pl_store` (
`store_id` int(11) NOT NULL COMMENT '门店自增ID',
`store_sn` varchar(10) NOT NULL COMMENT '门店编号',
`region_id` int(11) NOT NULL COMMENT '区域ID 对应org_region表',
`region_name` varchar(15) NOT NULL COMMENT '区域名称 对应org_region表',
PRIMARY KEY (`store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='门店表'
如建表语句的2张表。
如何统计当前区域下的门店数量?为0 也需要显示区域信息处理,谢谢!
SELECT p.region_id,COUNT(p.region_id) AS cnt,r.* FROM pl_org_region r, pl_store p WHERE r.region_id=p.region_id GROUP BY p.region_id;
这样查询只显示出来统计结果不为0 的情况。。 展开
2个回答
展开全部
一共加了三条数据
insert into pl_org_region(parent_id,region_sn,region_name,comments) values (0,'001','北京大区','无');
insert into pl_org_region(parent_id,region_sn,region_name,comments) values (0,'002','西南大区','无');
insert into pl_store (store_sn,region_id,region_name) values ('P001',6,'北京大区');
查询语句改成:
SELECT
p.region_id,
COUNT(p.region_id) AS cnt,
r.*
FROM
pl_org_region r
LEFT JOIN pl_store p ON r.region_id = p.region_id
GROUP BY
p.region_id;
查询结果:
数位汇聚
2023-08-28 广告
2023-08-28 广告
常见的查询城市人口数据途径有以下几个:1. 国家统计网站:中国各级单位及公众了解全国及各地区经济社会发展和人口变动情况的重要渠道之一。其网站可以查询全国及各地各级行政区域的人口数据,包括城市总人口、年龄结构、性别比例等。2. 地方统计网站:...
点击进入详情页
本回答由数位汇聚提供
2020-12-23 · MySQL开源数据库领先者
关注
展开全部
表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。
非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。
持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。
非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。
持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询