mysql avg()未按预期工作

mysql avg()未按预期工作,mysql,average,Mysql,Average,我现在在MySql上遇到了一些问题。我有一个很好用的查询,我使用它有一段时间了,但是今天我被它卡住了 查询是: select avg(valor), tipo_id, users_id, datetime from entries where users_id = '1' and tipo_id = 1 and date_format(datetime,"%Y-%m-%d") between "'2010-09-20" and "2010-10-20" and date_format(datet

我现在在MySql上遇到了一些问题。我有一个很好用的查询,我使用它有一段时间了,但是今天我被它卡住了

查询是:

select avg(valor), tipo_id, users_id, datetime from entries where users_id = '1' and tipo_id = 1 and date_format(datetime,"%Y-%m-%d") between "'2010-09-20" and "2010-10-20" and date_format(datetime,"%h:%i") between "11:59" and "18:59" and excluded= 'n'
查询返回valor字段的平均值,没关系。但是,当我将users_id值更改为635时,我无法获得avg()值。我有一些具有此用户id的数据,它们符合日期时间范围


我真的不知道我的查询出了什么问题,有将近700个用户,这是我第一次看到这种情况发生。

尝试按用户id添加组

select avg(valor), tipo_id, users_id, datetime from entries
where
    users_id = '1'
    and
    tipo_id = 1
    and
    date_format(datetime,"%Y-%m-%d") between "'2010-09-20" and "2010-10-20"
    and
    date_format(datetime,"%h:%i") between "11:59" and "18:59"
    and
    excluded= 'n'
GROUP BY users_id

在没有avg(valor)部分的情况下运行它,看看结果是什么,可能一些valor数据就是问题所在。也许你有一根绳子或者别的什么东西。你得到的答复是什么?有错误吗?

在这种情况下,他不需要分组。如果我没弄错的话,他会对整个结果进行分组。是的,分组不是我需要的。我没有得到任何结果,这就是我需要解决的问题。我没有得到任何错误,如果我在没有avg的情况下运行,我也没有得到任何结果,如果我更改了用户id,一切都正常。我尝试的每个用户都会返回一些信息,并且都有一些数据,就像有问题的用户一样。如果您没有获得该用户的数据,那么问题在于表数据,而不是查询。您是否希望表中有用户_id=635的数据。使用一些DBA工具(如phpMyAdmin)检查一下。是的,我有数据,我正在使用sequel pro查看它并运行查询。当您运行“从用户id='635'和tipo id=1的条目中选择tipo id、用户id、日期时间,并且日期格式(日期时间,%Y-%m-%d)介于“'2010-09-20”和“2010-10-20”之间,日期格式(日期时间,%h:%I”)介于”之间”“11:59”和“18:59”以及排除='n'“你什么也得不到,对吗?该用户的其余列中的数据如何,可能是“y”之类的。再次检查所有内容。我尝试了一些参数较少的查询,当我在没有中间值的情况下运行数小时时,查询工作正常。但奇怪的是,我将datetime中的值更改为“2010-10-19 14:15:00”(不带引号),因此所有条目在datetime列中都有此值。使用介于“00:00”和“12:59”之间的dateformat(datetime,“%h:$i”)可以得到值,但是如果datetime值的时间部分是14:15:00,这怎么会发生?检查valor列中的空值,这可能会引发计算valor列中没有空值,与此用户id无关