在编写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)列出每个雕刻家所雕刻的所有雕塑(四舍五入至小数位)的所有雕塑的姓氏和总雕塑值(作为一个名为“总雕塑值”的字段),并按总价值排序。只列出雕塑总价值低于10万的雕塑家。
我的问题是:
SELECT SR_LName,
SE_Value AS TotalSculptureValue
FROM Sculptor
JOIN Sculpture USING (SRID)
HAVING ( SE_Value ) < 100000发布于 2016-11-29 17:50:46
您确实需要学习如何使用聚合函数,但下面是这个函数的工作方式:
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) < 100000HAVING不同于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这会给你所有的雕塑家的名字,其中包含阿里和总价值不到100000。
https://stackoverflow.com/questions/40871384
复制相似问题