SELECT tb_publisher.book_name, AVG(tb_book.price) as average, MAX(tb_book.price), SUM(tb_book.price)
FROM tb_book
INNER JOIN tb_publisher
on tb_book.id_publisher = tb_publisher.id_publisher
WHERE 'average' < 70000
GROUP BY tb_publisher.publisher_name
我想显示一个数据,其中平均字段小于70000(假设只有1个记录低于该数字),我无法理解为什么它不想显示,而不是显示所有数据。我尝试了所有我认识的事情,所以帮助会很感激。感谢您的关注。
答案 0 :(得分:0)
大多数数据库允许您引用having
子句中的表别名,因此它看起来像:
SELECT p.publisher_name, AVG(b.price) as average, MAX(b.price), SUM(b.price)
FROM tb_book b INNER JOIN
tb_publisher p
ON b.id_publisher = p.id_publisher
GROUP BY p.publisher_name
HAVING average < 70000 ;
注意:
SELECT
中的未聚合列应与GROUP BY
中的列匹配。我不确定你是否想要书籍或出版商的信息,但我猜是出版商。price
是一个整数而您想要小数位,则可能需要AVG(b.price * 1.0)
或类似的东西。HAVING
子句中使用表别名。p.id_publisher
汇总,因为两个不同的发布商可能具有相同的名称。