[英]Mysql: Searching for data by month only yields one result not all of them
我有一個帶有Date_ordered列的Orders表。
我正在嘗試選擇在12月份購買的所有訂購商品的平均價格。
我用了
select *, avg(price) from orders where monthname(date_ordered) = "december"
但是,當我的表中有4個日期為xxxx-12-xx的實例時,只會得出一個結果
注意:數據中包含多年,但與我需要的查詢無關
查詢中的avg()
是一個組函數。 如果查詢中沒有GROUP BY
子句,則會導致將group函數應用於所有選定的行。 因此,您將獲得該字段中四個價格的平均值。 而且平均值只有一個。
將avg()
放入select
,會將查詢轉換為聚合查詢。 沒有group by
,SQL 總是在行上返回。 如果你想在平均以及其他數據,然后使用一個join
或子查詢:
select o.*, oo.avgp
from orders o cross join
(select avg(price) as avgp from orders where month(date_ordered) = 12) oo
where month(o.date_ordered) = 12;
AVG()是一個聚合函數。 它平均價格列中的每個值,並將結果壓縮為一行。 您可以將結果按另一列分組 ,或者考慮是否要使用avg()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.