选择值在2%以内的数据?

时间:2013-08-02 09:21:13

标签: mysql

我有一份学生健康评估结果表。我需要找到接受过前后测试的学生。为了获得学分,学生需要将测试前和测试后的体脂结果在2%以内。这是我目前为止的工作查询,但没有考虑到母体脂肪前后结果的2%差异。如何添加查询的这一部分?

这是我的问题:

SELECT studid, percentFat, ID1, ID2, STR_TO_DATE(TestDate, '%m/%d/%Y') as testd, bodpoints FROM bodpod, points WHERE ID2 = 'summer2' AND studid != '' GROUP BY studid HAVING COUNT( DISTINCT ID1 ) =2 AND YEAR( testd ) = '2013'

以下是我正在使用的数据:

- 表bodpod

的表结构
CREATE TABLE `bodpod` (
  `studid` varchar(50) default NULL,
  `TestDate` varchar(50) default NULL,
  `ID1` varchar(50) default NULL,
  `ID2` varchar(50) default NULL,
  `percentFat` varchar(50) default NULL,
   KEY `studid` (`studid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

- 转储表bodpod

的数据
INSERT INTO `bodpod` VALUES('123456', '7/29/2013 1:28:24 PM', 'pre', 'summer2', '22.3');
INSERT INTO `bodpod` VALUES('123456', '7/29/2013 1:22:23 PM', 'post', 'summer2', '15');

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您将数据库重组为包含前置和后置列,则可以使用:

SELECT * ... WHERE (pre < 1.02*post) AND (post < 1.02*pre) ...

MySQL会阻止您使用GROUP BY计算列进行选择。