在工作中,有这样一个需求,就是需要统计24个小时的相关数据.有的朋友认为简单的一句group by就可以解决。其实不然,真正的统计,24个小时都得有数据的,不允许出现缺失的现象.其实这个有点像废话,处理结果集ResultSet也可以,但为了减少JAVA的负担和增强java代码的可读性,所以尽量用SQL语句,一次性把数据处理好.
表结构,有三个字段一看就明白
Sql代码
CREATE TABLE `vardata` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`time` datetime DEFAULT '0000-00-00 00:00:00',
`data` double(15,5) DEFAULT '0.00000',
PRIMARY KEY (`Id`,`time`),
UNIQUE KEY `unique` (`name`,`time`)
)
CREATE TABLE `vardata` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`time` datetime DEFAULT '0000-00-00 00:00:00',
`data` double(15,5) DEFAULT '0.00000',
PRIMARY KEY (`Id`,`time`),
UNIQUE KEY `unique` (`name`,`time`)
)
下面我想统计12个月的每月数据,如果数据存在,则显示数据;如果数据不存在,则现实我们约定的错误码(-601).下面只是给出了3条SQL语句提供样例.
在真正的开发中,要把其中前面的time和后面where里的time,用所查询的语句,动态组装.如果朋友们还不理解,就给我留言吧 ^-^
Sql代码
select if(count(*)=0,-601,data) as data,'2011-07-12 10:40:00' as time from vardata where time='2011-07-12 10:40:00'
union
select if(count(*)=0,-601,data) as data,'2012-07-12 10:40:00' as time from vardata where time='2012-07-12 10:40:00'
union
select if(count(*)=0,-601,data) as data,'2013-07-12 10:40:00' as time from vardata where time='2013-07-12 10:40:00';
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com