我不是一个超级高级的MySQL用户,所以我转向SO寻求帮助。
我想要完成的是:
我有一张名为inodes_data
的表格。我正在尝试对名为sens2
的列进行平均,其中i_id
等于19371
,其中Time
介于'20140601' AND '20140831'
...
这是我的问题。我需要仅在DAYS中包含行(如午夜到晚上11:59),来自同一I_ID
表的另一个99101
(inodes_data
)的DAILY平均值等于{{1 }} ...
如果这个解释得不好,我很抱歉,因为我发现很难描述。
答案 0 :(得分:2)
您几乎可以将您的问题直接翻译成MySQL语句,如下所示:
select avg(sens2)
from inodes_data id
where time between '20140601' and '20140831' and
i_id = 19371 and
date(time) in (select date(time)
from inodex_data id2
where i_id = 99101
group by date(time)
having avg(sens2) = 0
);
通常,显式连接的执行效果优于in
,因此您应该使用此版本:
select avg(sens2)
from inodes_data id join
(select date(time) as d
from inodex_data id2
where i_id = 99101
group by date(time)
having avg(sens2) = 0
) d99101
on date(id.time) = d99101.d
where time between '20140601' and '20140831' and
i_id = 19371;