【发布时间】:2019-09-14 01:52:17
【问题描述】:
我有这个工作的mysql程序有没有办法用for循环来检查时间以最小化代码
这是我想在一天中平均 2 小时周期的过程代码,这一天由参数 daydate 定义
以及从“00:00:00”到“24:00:00”的时间
CREATE DEFINER=`user`@`localhost` PROCEDURE `proceduregetavgperday`(IN daydate date)
BEGIN
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"00:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '00:00:00' and `Time` < '02:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"02:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '02:00:00' and `Time` < '04:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"04:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '04:00:00' and `Time` < '06:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"06:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '06:00:00' and `Time` < '08:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"08:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '08:00:00' and `Time` < '10:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"10:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '10:00:00' and `Time` < '12:00:00' and `Date`=daydate)
union
(select IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Happiness`), 2),0) AS `Happiness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Anger`), 2),0) AS `Anger`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Contempt`), 2),0) AS `Contempt`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Disgust`), 2),0) AS `Disgust`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Fear`), 2),0) AS `Fear`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Neutral`), 2),0) AS `Neutral`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Sadness`), 2),0) AS `Sadness`,
IFNULL(ROUND(AVG(`viewemotionavgbydateandtime`.`Surprise`), 2),0) AS `Surprise`,
"12:00:00" as "Hour"
from viewemotionavgbydateandtime where `Time` >= '12:00:00' and `Time` < '14:00:00' and `Date`=daydate)
;
END
【问题讨论】:
-
将时间控制到下限或上限并按其分组
标签: mysql stored-procedures procedure