簡體   English   中英

Mysql:按月搜索數據只會產生一個結果,而不是全部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM