[单选题]设有一个关系emp-sales(部门号,部门名,商品编号,销售数),查询各部门至少销售了5种商品或者部门总销售数大于2000的部门号、部门名及平均销售数的SQL语句如下:SELECT部门号,部门名,AVG(销售数)AS平均销售数FROMemp-salesGROUPBY()HAVING()OR(请作答此空);

A
SUM(销售数)>2000
B
SUM(销售数)>=2000
C
SUM(‘ 销售数‘)>2000
D
SUM(‘ 销售数‘)>=2000
正确答案:A
题目解析
本题考基本sql语句。sql语言的固定格式,SELECT+表字段名+FROM+数据表名+WHERE+筛选条件,若表字段全部列都要选取,就用“*”代替,单独某几个列就用字段名和逗号隔开。字段名区域也可以使用一些SQL自带的函数进行处理,如求平均值、最大值等信息。后面的筛选条件就是类似于id=2,name="张三"这类条件。条件后面的having子句主要用于groupby子句的条件。它与where有相似之处但也有区别。在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行,而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。下面通过几个例子来说明:where子句:selectsum(num)asrmbfromtable1whereid>10//只有先查询出id大于10的记录才能进行聚合语句having子句:selectreportsnasmanager,count(*)asreportsfromtable1groupbyreportsnhavingcount(*)>4特别注意:having条件表达示为聚合语句。having子句查询过程执行优先级别低于聚合语句。也就是说把上面的having换成where则会出错。HAVING子句可以筛选成组后的各组数据。HAVING子句在聚合后对组记录进行筛选而WHERE子句在聚合前先筛选记录.也就是说作用在GROUPBY子句和HAVING子句前.
扫描二维码
免费搜题、免费刷题、免费查看解析