CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ia_att` decimal(3,2) NULL,
`t1` decimal(3,2) NULL,
`t2` decimal(3,2) NULL,
`t3` decimal(3,2) NULL,
`ia_tot` decimal(3,2) NULL,
.....
.....
PRIMARY KEY (`id`),
);
上表中有更多的列,但是我固定了这些列的计算,我需要的计算是
我必须从三个列t1,t2,t3中选取2个最佳值。并将这两个大值相加并除以“ 2”。然后将ia_att中的值相加,结果应放在ia_tot列中。“以上所述的计算应在每次向这些列输入新条目时进行。”
例子认为
ia_att = 72 t1 = 18 t2 = 15 t3 = 20 然后{[(18 + 20)/ 2] + 2} = 21;
18和20是来自t1,t2,t3的两个大值,来自ia_att。
PLZ帮助我在mysql中进行上述计算。
您的触发器可能看起来像
CREATE TRIGGER tg_bi_test
BEFORE INSERT ON test
FOR EACH ROW
SET NEW.ia_tot =
(NEW.t1 + NEW.t2 + NEW.t3 -
LEAST(NEW.t1, NEW.t2, NEW.t3)) / 2 +
CASE
WHEN NEW.ia_att > 95 THEN 5
WHEN NEW.ia_att BETWEEN 81 AND 95 THEN 4
WHEN NEW.ia_att BETWEEN 76 AND 80 THEN 3
WHEN NEW.ia_att BETWEEN 61 AND 75 THEN 2
WHEN NEW.ia_att < 60 THEN 2
END;
发行结果
INSERT INTO test (ia_att, t1, t2, t3) VALUES (72, 18, 15, 20);
将会
| ID | IA_ATT | T1 | T2 | T3 | IA_TOT | | ---- | -------- || ---- | ---- | ---- | -------- | | 1 | 72 | 18 | 15 | 20 | 21 |
这是SQLFiddle演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句