整个SQL语句不符合规范。没有From子句和Where子句,Group by Tid子句位置放错。
select Tid,LNofrom,Election,LNohaving from 某表名 Where Tid>=02 and Year=2005 group by Tid
group by就是按照不同的字段进行分组,数值可以实现汇总
例如数据库中有A表,包括学生,学科,成绩三个字段
数据库结构为
学生 学科 成绩
张三 语文 80
张三 数学 100
李四 语文 70
李四 数学 80
李四 英语 80
那么
select 学生,sum(成绩) from A group by 学生;
得到如下结果
学生 成绩
张三 180
李四 230
==============================================================
如果考虑having
语句写成:
select 学生,sum(成绩) from A group by 学生 having 成绩=80;
得到结果就是这样的
学生 成绩
张三 80
李四 160
用having比 JOIN ON 相对好理解一些,简单一些。
标示啊?是说明group by having的意思么?
例如:A公司有很多个部门,每个部门有很多人
这里我想查下每个部门有多少人,然后小于10的话就不要显示了。
select count() dept_sum, 部门 from table group by 部门 having count()>=10where 可以和 group by连用 但效果和having是不同的 。
一、group by all语法解析:
如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。
没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。
select DepartmentID,DepartmentName as '部门名称',COUNT() as '个数' from BasicDepartment group by all DepartmentID,DepartmentName。
二、group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数,
例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。having是分组(group by)后的筛选条件,分组后的数据组内再筛选。
三、having和where含义:
having是分组(group by)后的筛选条件,分组后的数据组内再筛选;where则是在分组前筛选。
where子句中不能使用聚集函数,而having子句中可以,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。即having子句的适用场景是可以使用聚合函数。
having 子句限制的是组,而不是行。having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle。
having 你可以认为是聚合函数的 where 部分,
使用聚合函数后,比如 avg(age) ,这是是不允许用where限定 avg(age)的,
而是用having avg(age)>21。
有聚合函数后,关于聚合函数的条件就用having。
最后一段的sql的目的是 选出年龄大于平均年龄的 学生的信息 ,但是是错误语句,少了group by。
以上就是关于数据库HAVING 子句中的列 'Election.Year' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。全部的内容,包括:数据库HAVING 子句中的列 'Election.Year' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。、数据库中group by的问题,还有having、在数据库的关系代数里,如何表示group by ,having....之类的东西等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)