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

标签 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)

列出雕塑家的姓氏和雕塑总值(value)(作为一个名为“总计”的字段 Sculpture Value”)为每位雕塑家雕刻的所有雕塑(四舍五入到小数点后两位),按总值(value)从小到大排序。仅列出雕塑总值(value)低于 10 万的雕塑家。

我的查询是:

SELECT SR_LName,
       SE_Value AS TotalSculptureValue
FROM   Sculptor
       JOIN Sculpture USING (SRID)
HAVING ( SE_Value ) < 100000

最佳答案

您确实需要学习使用聚合函数,但这是它的工作原理:

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 且总值(value)小于 100000 的所有雕塑家。

关于mysql - SQL 查询帮助,数据现在显示在 1 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871384/

相关文章:

php - 创建对数据库条目的安全 anchor 引用

mysql - SQL - 查找最接近当前日期的日期

mysql - 在Mysql中设置空间精度

python - heroku postgresql 不会 syncdb

mysql - 检索每组中的最后一条记录 - MySQL

sql - 在 SQL Server 中分解 HUGE 表是否更好?

mysql - SQL(也许是基本的)- 具有 3 个表的查询

mysql - MySQL 8.0.16 在 Windows 10 上的登录问题

Mysql 复制不工作

mysql - 有什么可能的方法来重写此查询以获得最佳性能吗?