具有内部联接的mySQL聚合函数

具有内部联接的mySQL聚合函数,mysql,Mysql,我有以下表格: CREATE TABLE `funds_balance` ( `idBUSINESS` int(11) NOT NULL, `PREMIUM_POSITIONS_CREDIT` decimal(18,2) NOT NULL DEFAULT '0.00', PRIMARY KEY (`idBUSINESS`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `elevated_business_queue` (

我有以下表格:

CREATE TABLE `funds_balance` (
  `idBUSINESS` int(11) NOT NULL,
  `PREMIUM_POSITIONS_CREDIT` decimal(18,2) NOT NULL DEFAULT '0.00',
  PRIMARY KEY (`idBUSINESS`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `elevated_business_queue` (
  `idBUSINESS` int(11) NOT NULL,
  `KEYWORD_TEXT` varchar(200) NOT NULL,
  `CITY` varchar(50) NOT NULL,
  `BID_AMOUNT` decimal(18,2) NOT NULL,
  `NO_OF_DAYS` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我试图从提升的业务队列表中选择有足够资金从资金余额表中支付所有出价的业务。我提出了以下问题:

SELECT ebq.idBUSINESS
     , KEYWORD_TEXT
     , CITY
     , BID_AMOUNT 
  FROM elevated_business_queue ebq
  JOIN funds_balance fb 
    ON fb.idBUSINESS = ebq.idBUSINESS
 GROUP 
    BY idBUSINESS
HAVING PREMIUM_POSITIONS_CREDIT >= (SUM(ebq.BID_AMOUNT) + (ROUND((12.36/100)*SUM(ebq.BID_AMOUNT)), 2));

但它不起作用。我得到错误未知列PREMIUM\u POSITIONS\u CREDIT。为什么?

如果您在HAVE子句中使用高级仓位信用,则必须在select STATTE中选择它如果您在HAVE子句中使用高级仓位信用,则必须在select STATTE中选择它
在查询序列的“结尾”处使用
子句过滤器,并且只能处理在查询中实际选定的字段。由于您没有在字段列表中包含
高级职位\信用
,因此结果集中不存在该字段,因此无法对其进行筛选

干脆

SELECT PREMIUM_POSITIONS_CREDIT, rest,of,the,fields
它会开始工作的

e、 g


子句过滤在查询序列的“末尾”,并且只能处理在查询中实际选定的字段。由于您没有在字段列表中包含
高级职位\信用
,因此结果集中不存在该字段,因此无法对其进行筛选

干脆

SELECT PREMIUM_POSITIONS_CREDIT, rest,of,the,fields
它会开始工作的

e、 g


Premium_positions_credit不在结果集中Premium_positions_credit不在结果集中尝试了这一点,但现在我得到了错误-错误代码:1241。操作数应包含1列。新的select语句是select ebq.idBUSINESS、关键字\文本、城市、出价\金额、fb.PREMIUM \位置\信用您在round()内容中的括号不正确。您的
,2
实际上在round()调用之外。您正在使用哪个MySQL?它
创建表foo(intx,inty)应该是
创建表foo(x int,y int)
@GordonLinoff:所以自己测试它,就像我在我的示例中所做的那样。然后解释为什么选择x/y不起作用。尝试过,但现在我得到了错误-错误代码:1241。操作数应包含1列。新的select语句是select ebq.idBUSINESS、关键字\文本、城市、出价\金额、fb.PREMIUM \位置\信用您在round()内容中的括号不正确。您的
,2
实际上在round()调用之外。您正在使用哪个MySQL?它
创建表foo(intx,inty)应该是
创建表foo(x int,y int)
@GordonLinoff:所以自己测试它,就像我在我的示例中所做的那样。然后解释为什么选择x/y不起作用。如果我像这样将其添加到select语句中:select ebq.idBUSINESS,KEYONE\u TEXT,CITY,BID\u AMOUNT,fb.PREMIUM\u POSITIONS\u CREDIT----我得到错误:错误代码:1241。操作数应该包含1列。如果我将其添加到select语句中,如下所示:select ebq.idBUSINESS、关键字\文本、城市、出价\金额、fb.PREMIUM \位置\信用----我得到错误:错误代码:1241。操作数应包含1列。