我是否可以在选择之前计算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子句指定由一个或多个逗号分隔的多个表)是不合法的,令人惊讶的是,在教育环境中教这种语法。