我在编写SQL查询时遇到问题
Sculptor (SRID, SR_FName, SR_LName, SR_DOB)
Sculpture (SEID, SE_Name, SE_Value, SRID*, SID*)
Model (MID, M_FName, M_LName, M_Salary)
列出雕刻家的姓氏和总雕塑价值(作为一个名为“Total”的字段 雕塑价值“)每个雕塑家雕刻的所有雕塑(四舍五入到小数点后两位),按总价值的升序排序。只列出雕塑总价值低于10万的雕塑家。
我的查询是:
SELECT SR_LName,
SE_Value AS TotalSculptureValue
FROM Sculptor
JOIN Sculpture USING (SRID)
HAVING ( SE_Value ) < 100000
答案 0 :(得分:0)
您确实需要学习使用聚合函数,但这是如何使用聚合函数的:
SELECT SR_LName,
sum(SE_Value) AS "TotalSculptureValue"
FROM Sculptor
JOIN Sculpture USING (SRID)
group by SR_LName
首先尝试运行该查询。您应该看到所有雕刻家名称及其值的总和。
然后重新添加HAVING
,因为这是限制聚合函数结果的方法:
SELECT SR_LName,
sum(SE_Value) AS "TotalSculptureValue"
FROM Sculptor
JOIN Sculpture USING (SRID)
group by SR_LName
having sum(SE_Value) < 100000
HAVING
与WHERE
不同。如果您想限制非聚合列,例如名称,则可以使用WHERE
:
SELECT SR_LName,
sum(SE_Value) AS "TotalSculptureValue"
FROM Sculptor
JOIN Sculpture USING (SRID)
where SR_LName like '%Ali%'
group by SR_LName
having sum(SE_Value) < 100000
这将为您提供名称包含Ali的所有雕塑家,总价值小于100000。