Mysql 选择与计算输出相比较的值(另一个表的平均值)

Mysql 选择与计算输出相比较的值(另一个表的平均值),mysql,sql,where,average,Mysql,Sql,Where,Average,希望我能解释清楚, 我的输出当前显示ID和另一个表中每个ID的一组结果的平均值。它还获取了这些结果的平均值以及车牌号 现在,我想做的是,设置一个阈值。。所以,只显示平均值低于其应有值50%的ID 这是我目前的代码 select k.ncr_identifier, avg(j.total_mass) as MassTotalAvg, l.TOTAL_COMBINATION_MASS , k.plate_number From iapm_mass_data j inner join iapm_dat

希望我能解释清楚, 我的输出当前显示ID和另一个表中每个ID的一组结果的平均值。它还获取了这些结果的平均值以及车牌号

现在,我想做的是,设置一个阈值。。所以,只显示平均值低于其应有值50%的ID

这是我目前的代码

select k.ncr_identifier, avg(j.total_mass) as MassTotalAvg, l.TOTAL_COMBINATION_MASS , k.plate_number
From iapm_mass_data j
inner join iapm_data_link k on j.record_id = k.mass_record_id
inner join iacd_ncr_sdtcm_rec l on  k.ncr_record_id = l.NCR_ID
Where k.ivu_date >= date '2015-03-01' 
and k.ivu_date <= date '2015-03-31'
and l.VEHICLE_CATEGORY_CODE = '12'
group by k.ncr_identifier
选择k.ncr\u标识符,平均(j.total\u mass)作为MassTotalAvg,l.total\u composition\u mass,k.plate\u number
来自iapm_质量_数据j
j.record\u id=k.mass\u record\u id上的内部连接iapm\u数据链路k
k.ncr\U记录上的内部联接iacd\U ncr\U sdtcm\U rec l\U id=l.ncr\U id
其中k.ivu_date>=日期“2015-03-01”

对于这种情况,您需要使用Having关键字。请试试这个:

select k.ncr_identifier, avg(j.total_mass) as MassTotalAvg, l.TOTAL_COMBINATION_MASS , k.plate_number
From iapm_mass_data j
inner join iapm_data_link k on j.record_id = k.mass_record_id
inner join iacd_ncr_sdtcm_rec l on  k.ncr_record_id = l.NCR_ID
Where k.ivu_date >= date '2015-03-01' 
and k.ivu_date <= date '2015-03-31'
and l.VEHICLE_CATEGORY_CODE = '12'
group by k.ncr_identifier, l.TOTAL_COMBINATION_MASS , k.plate_number
having l.TOTAL_COMBINATION_MASS < 0.5(avg(j.total_mass))
选择k.ncr\u标识符,平均(j.total\u mass)作为MassTotalAvg,l.total\u composition\u mass,k.plate\u number
来自iapm_质量_数据j
j.record\u id=k.mass\u record\u id上的内部连接iapm\u数据链路k
k.ncr\U记录上的内部联接iacd\U ncr\U sdtcm\U rec l\U id=l.ncr\U id
其中k.ivu_date>=日期“2015-03-01”
和k.ivu_date试试这个:

select k.ncr_identifier, avg(j.total_mass) as MassTotalAvg, l.TOTAL_COMBINATION_MASS , k.plate_number
    From iapm_mass_data j
        inner join iapm_data_link k on j.record_id = k.mass_record_id
        inner join iacd_ncr_sdtcm_rec l on  k.ncr_record_id = l.NCR_ID
    Where k.ivu_date >= date '2015-03-01' 
        and k.ivu_date <= date '2015-03-31'
        and l.VEHICLE_CATEGORY_CODE = '12'
    group by k.ncr_identifier, l.TOTAL_COMBINATION_MASS , k.plate_number
    having l.TOTAL_COMBINATION_MASS < 0.5*avg(j.total_mass)
选择k.ncr\u标识符,平均(j.total\u mass)作为MassTotalAvg,l.total\u composition\u mass,k.plate\u number
来自iapm_质量_数据j
j.record\u id=k.mass\u record\u id上的内部连接iapm\u数据链路k
k.ncr\U记录上的内部联接iacd\U ncr\U sdtcm\U rec l\U id=l.ncr\U id
其中k.ivu_date>=日期“2015-03-01”

而k.ivu_date实际上mysql允许您不必指定group by中的所有非聚合字段。但是你必须小心,任何这样的字段都有相同的值,否则你的结果将是不确定的。伙计们,谢谢你们的响应,但是MySQL似乎不喜欢它,得到错误“你的SQL语法有错误;检查与你的MySQL服务器版本对应的手册,以获得正确的语法使用方法”(avg)(j.total_mass)在第9行“嘿,伙计们,谢谢你们的回复,奇怪,但MySQL不喜欢0.5(avg(j.total_mass),但对0.5*avg(j.total_mass)很满意…所以看起来很有效,谢谢againIt不是奇怪!”*“缺失了。
select k.ncr_identifier, avg(j.total_mass) as MassTotalAvg, l.TOTAL_COMBINATION_MASS , k.plate_number
    From iapm_mass_data j
        inner join iapm_data_link k on j.record_id = k.mass_record_id
        inner join iacd_ncr_sdtcm_rec l on  k.ncr_record_id = l.NCR_ID
    Where k.ivu_date >= date '2015-03-01' 
        and k.ivu_date <= date '2015-03-31'
        and l.VEHICLE_CATEGORY_CODE = '12'
    group by k.ncr_identifier, l.TOTAL_COMBINATION_MASS , k.plate_number
    having l.TOTAL_COMBINATION_MASS < 0.5*avg(j.total_mass)