sql中的having
A. 在sql 里having后面为什么只能跟聚合函数
having后面可以不跟聚合函数, 但他只能根据group by后面字段进行再次筛选, 比如: group by A having A = xxx ,或者 group by A having max(A) = xxx。 如果用group by A,这个时候如果使用having B= xxx 的时候 , 可以想象一下按照咱们正常的逻辑 , 它就不知道该用A组里面哪一个B字段了。所以大部分情况having后面都是聚合函数(这也是having存在的意义,它本身就是用来基于某一个组上的数据来操作或者筛选的)。
B. sql中having用法
HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。
语法:
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;
在这里,如果用WHERE代替HAVING就会出错。
数据操纵
数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵。
1、数据检索(常称为查询):寻找所需的具体数据。
2、数据修改:插入、删除和更新数据。
数据操纵语言一般由 INSERT(插入)、 DELETE(删除)、 UPDATE(更新)、 SELECT(检索,又称查询)等组成。由于 SELECT经常使用,所以一般将它称为查询(检索)语言并单独出现。
C. sql中的having是什么意思
SQLSERVER的帮助比谁讲的都清楚,简单的说就是group by 的where条件,对group by生成的结果进行筛选
D. sql中having只是和group by 一起用的吗
是的。having和group by必须一起使用,或者只使用group by不适用having。但是有having的时候必须出现group by。
一、having子句
Having的本质和where一样,是用来进行数据条件筛选。Having是在group by子句之后,可以针对分组数据进行统计筛选。但是where不行,通俗的讲where用在select之后group by之前,但是having用在group by之后。都是条件筛选的作用。
二、group by语句
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
三、where条件筛选语句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。根据SELECT内的字段进行条件筛选。
(4)sql中的having扩展阅读
关于having和group by的一些小技巧
一、Having在group by分组之后,可以使用聚合函数或者字段别名(where是从表中取出数据,别名是在数据进入到内存之后才有的)
二、having是在group by之后,group by是在where之后,where的时候表示将数据从磁盘拿到内存,where之后的所有操作都是内存操作。
三、order by与groupby类似,但是只有当使用limit的时候才会起作用。
E. SQL简述GROUP BY 和HAVING的含义和他们之间的交互
where可以和groupby连用但效果和having是不同的 。
一、group by all语法解析:
如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。
没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。
select DepartmentID,DepartmentName as '部门名称',COUNT(*) as '个数' from BasicDepartment group by all DepartmentID,DepartmentName。
- 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
having是分组(group by)后的筛选条件,分组后的数据组内再筛选;where则是在分组前筛选。
where子句中不能使用聚集函数,而having子句中可以,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。即having子句的适用场景是可以使用聚合函数。
having 子句限制的是组,而不是行。having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle。
二、group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数,
having是分组(group by)后的筛选条件,分组后的数据组内再筛选。
三、having和where含义:
F. sql having用法是什么
1、HAVING只用于GROUPBY(分组统计语句)。
2、WHERE是用于在初始表中筛选查询,HAVING用于在WHERE和GROUPBY结果中查询。
3、HAVING可以使用聚合函数,面WHERE不能。
不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
(6)sql中的having扩展阅读:
SQL语言结构化查询语言(StructuredQueryLanguage)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语言允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
G. sql里的having什么意思 比如说having count(学号)
对由sum、count或其它集合函数运算结果的输出进行限制
havingcount(学号)指的是 学生数目( 大于等于)数值
createTABLETable1
(
IDintidentity(1,1)primarykeyNOTNULL,
classidint,
sexvarchar(10),
ageint,
)
--添加测试数据
InsertintoTable1values(1,'男',20)
InsertintoTable1values(2,'女',22)
InsertintoTable1values(3,'男',23)
InsertintoTable1values(4,'男',22)
InsertintoTable1values(1,'男',24)
InsertintoTable1values(2,'女',19)
InsertintoTable1values(4,'男',26)
InsertintoTable1values(1,'男',24)
InsertintoTable1values(1,'男',20)
InsertintoTable1values(2,'女',22)
InsertintoTable1values(3,'男',23)
InsertintoTable1values(4,'男',22)
InsertintoTable1values(1,'男',24)
InsertintoTable1values(2,'女',19
--举例子说明:查询table表查询每一个班级中年龄大于20,性别为男的人数
selectCOUNT(*)as'>20岁人数',classidfromTable1wheresex='男'groupbyclassid,agehavingage>20
--若要确保对每种产品的计算中至少包含1500项,请使用HAVINGCOUNT(*)>1500消除返--回的销售总数小于1500项的产品。该查询类似于下面的示例:
SELECTProctID,SUM(LineTotal)ASTotal
FROMSales.SalesOrderDetail
GROUPBYProctID
HAVINGCOUNT(*)>1500;
H. sql中“having”的用法是什么
这个是用在聚合函数的用法。当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到HAVING 的用法了,就是进行判断了。
I. SQL语言中的having代表什么意思
它主要用于分组后的条件过滤,未分组的用 where,如果用了group by 那么后面的过滤条件就不能再用where了,要用having
J. sql中having的用法
你这个语句都错了, 怎么还能显示全部呢?
你的group by语句应该这样写才行
groupbyst.stuName,st.stuId,subName
having...