我是否可以在选择之前计算SQL操作?

我是否可以在选择之前计算SQL操作?,sql,having-clause,Sql,Having Clause,我有点像 product: Sales: pk unitPr Fk Qty 1 5 1 50 2 10 2 20 3 15

我有点像

product:                                     Sales:
pk       unitPr                         Fk         Qty
1         5                              1         50
2         10                             2         20
3         15                             3         90
                                         1         36
                                         2         21
我只想找到销售总额(unitPr*Qty)<1500的产品以及它们的数量

所以我想是这样的:

 pk       countPk
  1         2
  3         1
对吧?? 我试过这个:

 SELECT count(*) As countPk, pk
 FROM product, sales
 WHERE pk=Fk
 GROUP BY pk
 HAVING SUM(unitPr * Qty) < 1500
选择count(*)作为countPk,pk
从产品、销售
其中pk=Fk
按主键分组
总和(单位价格*数量)<1500

但我不确定,因为我不认为我可以在我没有的列上使用HAVING运算符,但我不想创建它,我只想在SELECT上使用pk和conutPk。

一般来说,您可以。但是,需要学习如何使用正确、明确、标准的联接语法、表别名和限定的列名:

SELECT p.pk, count(*) As countPk
FROM product p JOIN
     sales s
     ON p.pk = s.Fk
GROUP BY p.pk
HAVING SUM(p.unitPr * s.Qty) < 1500
选择p.pk,count(*)作为countPk
从乘积p连接
销售
在p.pk=s.Fk上
按p.pk分组
总(p.unitPr*s.Qty)<1500

通常,您可以。但是,需要学习如何使用正确、明确、标准的联接语法、表别名和限定的列名:

SELECT p.pk, count(*) As countPk
FROM product p JOIN
     sales s
     ON p.pk = s.Fk
GROUP BY p.pk
HAVING SUM(p.unitPr * s.Qty) < 1500
选择p.pk,count(*)作为countPk
从乘积p连接
销售
在p.pk=s.Fk上
按p.pk分组
总(p.unitPr*s.Qty)<1500

你可以使用它。@BarbarosÖzhan:语法有一些问题。。。join的老式逗号运算符应替换为
join
,join谓词可移动到
ON
子句中的
,所有列引用应使用表名或表别名限定。@spencer7593 ok,当然你是对的。我没有注意到,但写了关于
子句,这是问题的主要关注点。你可以用它。@BarbarosÖzhan:语法有一些问题。。。join的老式逗号运算符应替换为
join
,join谓词可移动到
ON
子句中的
,所有列引用应使用表名或表别名限定。@spencer7593 ok,当然你是对的。我没有注意到,但是写了关于
子句,这是问题的主要关注点。好的,谢谢!对于标准连接语法,教授使用了最短的连接语法,但u是绝对正确的,这肯定更正确@HugoB,如果你想成为一名程序员,你可能还想练习拼写“u”为“you”!你的教授听起来好像落后了几十年,因为现在人们普遍认为使用所谓的ANSI-89连接语法(其中FROM子句指定由一个或多个逗号分隔的多个表)是不合法的,令人惊讶的是,在教育环境中教这种语法。好的,谢谢!对于标准连接语法,教授使用了最短的连接语法,但u是绝对正确的,这肯定更正确@HugoB,如果你想成为一名程序员,你可能还想练习拼写“u”为“you”!你的教授听起来好像落后了几十年,因为现在人们普遍认为使用所谓的ANSI-89连接语法(在这种语法中,FROM子句指定由一个或多个逗号分隔的多个表)是不合法的,令人惊讶的是,在教育环境中教这种语法。