第1
关:AVG()
函数的使用
返回某一字段的平均值
AVG()
函数通过计算某字段(列)内容(行)的个数和它们的数值之和来返回某一字段的平均值。
语法规则为:
SELECT AVG(column_name)
FROM table_name
举个例子
我们想从表 Customers
中,检索到所有消费者消费金额的平均值。
表 Customers
的内容如下表所示:
输入:
SELECT AVG(cost) as avg_cost
FROM Customers
输出:
avg_cost |
2415.26 |
在这个例子里, SELECT
语句只负责返回一个值,这个值就是 avg_cost
。 avg_cost
是我们为检索数据起的“小名”,它包含着所有消费者消费金额的平均值。
Tips:
如果你没有为你的检索结果起个“小名”, 那它就只能是供你观赏的一个值,在接下来的操作中,你将不能继续使用它。所以为了以防万一,好的习惯是为自己每一个检索结果,都起一个有意义的名字,好看又好记。
返回某一字段指定内容的平均值
AVG()
函数不仅能计算某字段(列)的平均值,如果你愿意,还能为 SELECT
语句增加条件,以此来计算某些特定条件下某字段的平均值。
举个例子
我们想从表Customers
中,检索到所有叫Alice
的消费者消费金额的平均值。表 Customers
的内容与上例一致。
输入:
SELECT AVG(cost) as avg_alice_cost
FROM Customers
WHERE cust_name LIKE 'Alice%'
与上例不同的是,我们在这里加入了条件筛选语句 WHERE
。WHERE
语句帮我们过滤了所有不叫 Alice
的人,因此,我们所查到的消费金额平均值是所有叫Alice
的人的消费平均值。
编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。你只需补全右侧代码片段中 Begin-End
区间的代码,返回表Products
中商品价格( prod_price
)大于平均值的商品的 prod_name
和 prod_price
。
其中表 Products
的内容如下表所示:
提示:
- 与本关例子不同的是,在练习中需要你们返回的是
prod_name
和prod_price
,而不是平均值; - 与本关例子不同的是,在练习中需要你们设置的过滤条件是平均值;
- SELECT 语句是可以嵌套使用的,比如有如下形式的代码:
SELECT column_A
FROM table
WHERE column_A < (SELECT column_B FROM table)
测试说明
测试过程:
- 本关涉及到的测试文件是
step1_test.sh
,平台将运行用户补全的step1.sql
文件,得到数据; - 将得到的数据与答案比较,判断代码是否正确。
如果操作正确,你将得到如下的结果:
开始你的任务吧,祝你成功!
USE Mall
GO
SET NOCOUNT ON
------ return two columns that the price bigger than average price ------
-- ********** Begin ********** --
SELECT prod_name, prod_price
FROM Products
WHERE prod_price >
(SELECT AVG(prod_price) FROM Products);
-- ********** End ********** --
GO
我的解题思路:
的顺序去写,1. FROM 和 JOINs 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. DISTINCT 7. ORDER BY 8. LIMIT / OFFSET
照着这个顺序,你能根据计算机思维去思考怎么过滤和筛选数据
例如这一题,我先写FROM prod_price 再写where条件
where条件再更具要求去写,如根据那个字段去筛选,这一题,是根据字段名 商品价格( prod_price )筛选,然后是运算符,再然后就是嵌套语句,