服装电子商务网站建设3000字,青海学会网站建设公司,惠阳住房与规划建设局网站,山东做网站建设公司where#xff1a;数据库中常用的是where关键字#xff0c;用于在初始表中筛选查询。它是一个约束声明#xff0c;用于约束数据#xff0c;在返回结果集之前起作用。
group by:对select查询出来的结果集按照某个字段或者表达式进行分组#xff0c;获得一组组的集合#x…where数据库中常用的是where关键字用于在初始表中筛选查询。它是一个约束声明用于约束数据在返回结果集之前起作用。
group by:对select查询出来的结果集按照某个字段或者表达式进行分组获得一组组的集合然后从每组中取出一个指定字段或者表达式的值。
having用于对where和group by查询出来的分组经行过滤查出满足条件的分组结果。它是一个过滤声明是在查询返回结果集以后对查询结果进行的过滤操作。
order by: SELECT field1, field2,...fieldN FROM table_name1, table_name2...ORDER BY field1 [ASC [DESC][默认 ASC]], [field2…] ASC [DESC][默认 ASC] 执行顺序
select –where – group by– having–order by
-- 语法
SELECT select_list
FROM table_name
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
[limit m,n] -- 示例
-- limit 0,10是从第一条开始,取10条数据
select classNo from table_name
group by classNo
having(avg(成绩)70)
order by classNo
limit 0,10group by having的一些用法 以图书价格表为例
group by返回各个类别的书籍的统计
select type, sum(price),avg(price),max(price),min(price),count(*) from titles group by type返回各个出版社分别出版书籍的数量并排序(降序)
select pub_id, count(*) from titles group by pub_id order by count(*) desc 对type,pub_id进行分组统计
select count(*),type,pub_id from titles group by type,pub_id order by count(*) desc having筛选组
返回类别的均价15的书籍的统计
select avg(price),type from titles group by type having avg(price)15
注:先求平均值,再求均价15的记录. 对价格大于15的书籍进行type分组
select avg(price),type from titles where price15 group by type
注:先求价格15的记录,再根据类别求其价格15的均价. 返回平均价格在13到18之间的图书分类
select avg(price),type from titles group by type having avg(price) between 13 and 18 返回出版书籍的数量6的出版社编号
select count(*),pub_id from titles group by pub_id having count(*)6
having与where区别
having子句与where有相似之处但也有区别,都是设定条件的语句。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
where子句
select sum(num) as rmb from order where id10
只有先查询出id大于10的记录才能进行聚合语句 having子句:
select reportsto as manager, count(*) as reports from employees group by reportsto having count(*) 4
以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句。
再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。 聚合函数这是必需先讲的一种特殊的函数
例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) FROM tablename
这里的SUM作用在所有返回记录的population字段上结果就是该查询只返回一个结果即所有国家的总人口数。 通过使用GROUP BY 子句可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。
当你指定 GROUP BY region 时 属于同一个region地区的一组数据将只能返回一行值
也就是说表中所有除region地区外的字段只能通过 SUM, COUNT等聚合函数运算后返回一个值
HAVING子句可以让我们筛选成组后的各组数据
HAVING子句在聚合后对组记录进行筛选
而WHERE子句在聚合前先筛选记录也就是说作用在GROUP BY 子句和HAVING子句前
看下面这几个例子吧 一、显示每个地区的总人口数和总面积
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组这就是GROUP BY的字面含义。分完组后然后用聚合函数对每组中的不同字段一或多条记录作运算。 二、 显示每个地区的总人口数和总面积仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)1000000
在这里我们不能用where来筛选超过1000000的地区因为表中不存在这样一条记录。
相反HAVING子句可以让我们筛选成组后的各组数据。 结论
1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。 2.GROUP BY 子句用来分组 WHERE 子句的输出。 3.HAVING 子句用来从分组的结果中筛选行。