设有一个关系emp-sales(部门号,部门名,商品编号,销售数),查询各部门至

资格题库2022-08-02  81

问题 设有一个关系emp-sales(部门号,部门名,商品编号,销售数),查询各部门至少销售了5 种商品或者部门总销售数大于2000 的部门号、部门名及平均销售数的SQL 语句如下:SELECT 部门号,部门名,AVG(销售数)AS 平均销售数FROM emp-salesGROUP BY ( )HAVING(请作答此空)OR();A. COUNT(商品编号)>5B. COUNT(商品编号)>=5C. COUNT(DISTINCT 部门号))>=5D. COUNT(DISTINCT 部门号)>5

选项 A. COUNT(商品编号)>5
B. COUNT(商品编号)>=5
C. COUNT(DISTINCT 部门号))>=5
D. COUNT(DISTINCT 部门号)>5

答案 B

解析 本题考基本sql语句。sql语言的固定格式,SELECT + 表字段名 + FROM +数据表名+ WHERE + 筛选条件,若表字段全部列都要选取,就用“*”代替,单独某几个列就用字段名和逗号隔开。 字段名区域也可以使用一些SQL自带的函数进行处理,如求平均值、最大值等信息。后面的筛选条件就是类似于 id=2,name="张三 "这类条件。条件后面的having子句主要用于group by子句的条件。它与where有相似之处但也有区别。在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行,而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。下面通过几个例子来说明:where子句:select sum(num) as rmb from table1  where id>10  //只有先查询出id大于10的记录才能进行聚合语句having子句:select reportsn as manager, count(*) as reports from  table1  group by reportsn having count(*) > 4特别注意:having条件表达示为聚合语句。having子句查询过程执行优先级别低于聚合语句。也就是说把上面的having换成where则会出错。HAVING子句可以筛选成组后的各组数据。 HAVING子句在聚合后对组记录进行筛选而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.
转载请注明原文地址:https://tihaiku.com/congyezige/2428620.html

最新回复(0)