SQL查询帮助,数据现在显示在1列中

时间:2016-11-29 16:52:49

标签: mysql sql

我在编写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

1 个答案:

答案 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

HAVINGWHERE不同。如果您想限制非聚合列,例如名称,则可以使用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。