直接用例子来说明吧
现有表:居民区表:DW_DM_RE_RC,部分字段如下
select AREA_ID,AREA_NAME,CITY_ID,CITY_NAME,RC_ID,RC_NAME,RC_TYPE_ID,RC_TYPE_NAME,RC_ADDRESS,FLOOR_CNT,BUILDING_CNT from DW_DM_RE_RC

数据主要集中在宿迁和无锡两个地市。
现需要根据AREA_ID和CITY_NAME进行分组,且显示同一个AREA_ID的数据数量。(AREA_ID和AREA_NAME相关联,CITY_ID,CITY_NAME相关联)
第一步:
sql1:
select COUNT(*) as COUNT,AREA_ID,AREA_NAME,CITY_ID,CITY_NAME from DW_DM_RE_RC
group by AREA_ID,AREA_NAME,CITY_ID,CITY_NAME

这里COUNT显示的是以AREA_ID和CITY_NAME为条件进行分组的,
表示AREA_ID=510,CITY_NAME=‘滨湖区’(无锡市滨湖区)的数据有131条,表示AREA_ID=527,CITY_NAME=‘泗洪’(宿迁市泗洪区)的数据有101条,但我需要的是属于AREA_ID=510(无锡市,不管哪个区)的总数据量有多少,并且需要显示CITY_NAME。也就是需要改变显示的COUNT值。由此得到启发
sql2:
SELECT T1.AREA_ID,T1.AREA_NAME,T1.CITY_ID,T1.CITY_NAME,T2.COUNT FROM
(SELECT COUNT(*) AS COUNT,AREA_ID,AREA_NAME,CITY_ID,CITY_NAME FROM DW_DM_RE_RC
GROUP BY AREA_ID,AREA_NAME,CITY_ID,CITY_NAME) T1
LEFT JOIN (
SELECT COUNT(*) AS COUNT,AREA_ID,AREA_NAME FROM DW_DM_RE_RC
GROUP BY AREA_ID,AREA_NAME
)T2 ON T1.AREA_ID = T2.AREA_ID AND T1.AREA_NAME = T2.AREA_NAME
先对市、区分组,查出显示的主体(城市和区)。再对城市分组,查出城市对应的数量(T2里的COUNT字段,也就是需要显示的值),两者做一次关联。
查询结果如下。显示了无锡的各个区,并且显示整个无锡的数量,(而不是各个区的数量)

聚合函数在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即国家的总人口数。
MySQL--Group by分组与count计数(进阶)1、Group by语法2、创建表格3、题目代码部分4、文末彩蛋
更多关于数据库知识请加关注哟~~。若需联系和想安装MySQL请加博主:
QQ:3327908431
&nbs...
CREATE TABLE IF NOT EXISTS `test_users` (
`email_id` int(11) unsigned NOT NULL auto_increment,
`email` char(100) NOT NULL,
`passwords` char(64) NOT NULL...
1、QL Server Group By语句,Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。(以下是Group By的的语法,GROUP BY 子句为列中的每个值组合生成一个组。)
2、GROUP BY 子句通常与聚合函数一起用于统计数据。聚合函数对组执行计算并返回每个组的唯一值。 例如, COUNT() 函数返回每个组中的行数。(以下是GROUP BY 子句与COUNT()函数一起使用
语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
select column1, column2, … column_n, aggregate_function (expression)
from tables
where predicates
group by column1, column2, … column_n;
having
下面是 HAVING 子句在 SELECT 查询中的位置:
SELECT
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 5
报错的意思是:期望的是一条数据,但是返回的是五条数据
在看一下报错的SQL语句
SELECT
count( ma.goods_id ) AS num
machin
之前听大佬说过,会学习的人将资料写下来,不会学习的人妄想将资料记到脑子里,我觉得还是有一定道理的,好记性不如烂笔头。以此篇博客记录我在实际开发中常用到的sql语句,方便以后查看。
相信很多用过sql的人,谈到sql语句第一时间想到的就是:select * form 表名 where 条件,这是最基本的查询,下面我将简单介绍SQL语句的执行顺序开始介绍。
sql执行顺序
(1)from
(3) join
(2) on
(4) where
(5)group by(开始使用select中的别名,后面的语句中都可以
最近在自学MySQL,跟着视频练练手,遇到了一些小问题百思不得其解,只能先MARK下来,待以后继续慢慢思考
有两行表(其他用不上的字段先不考虑了):
员工表(包含员工ID、员工名、部门ID)
部门表(包含部门ID、部门名字)
现在要查询每个部门的员工人数,考虑用group by按部门进行分组查询,语法如下:
SELECT d., COUNT() 人数
FROM departments d
LEFT...
数据:表dept_emp、表salaries
1. 获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary。
select a.dept_no,a.emp_no,max(b.salary)
from dept_emp as a
join salaries as b on a.emp_no=b.emp_no
where 1=1
and a.to_date = '9999-01-01'
and b.t