繁体   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