mysql - 查询作者 > 1 的每个出版商

标签 mysql sql

enter image description here

这些是我的表,我正在努力制定一个查询来执行以下操作:

对于拥有多名作者的每个出版商,获取出版商的名称、位置以及其销售图书的平均成本。

我想我需要一个 SELECT COUNT(authorName) 但我对两个查询的 JOIN 感到困惑,有什么帮助吗?

编辑:

SELECT publisherName, COUNT(authorName) AS noAuthors FROM Book GROUP BY publisherName;

将返回每个发布者的authorCount,只需立即加入

最佳答案

select b.publishername,
       p.location,
       count(distinct b.authorname) as noauthors,
       avg(b.cost) as avg_cost
  from book b
  join publisher p
    on b.publishername = p.name
 group by b.publishername, p.location
having count(distinct b.authorname) > 1

需要指出的是: 您必须计算不同的作者,count(authorname) > 1 可能包括拥有 2 本书以上同一作者的书籍,但没有其他作者的书籍的出版商。上述内容将结果限制为拥有 2 个或更多独特作者的图书的出版商,这正是您在问题中所说的期望。

fiddle :

http://sqlfiddle.com/#!9/45019/1/0

输出:

| PUBLISHERNAME | LOCATION | NOAUTHORS | AVG_COST |
|---------------|----------|-----------|----------|
|     TechBooks |   London |         2 |     32.5 |

请注意 BudgetBooks 是如何被排除的。他们有两本书,但都是同一作者。如果您没有进行重复计数,它们将被错误地包含在内。

关于mysql - 查询作者 > 1 的每个出版商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472328/

相关文章:

java - Unknown Os Character Set 'cp720' , 切换到默认字符集 'latin1'

mysql - 优化mysql if elseif和else逻辑

php - Laravel 关系 - 尝试获取非对象的属性

MySQL Create Table Like with Engine 覆盖

sql - 将表转换为第三范式

php - 使用 SQL JOIN 和 COUNT

Mysql合并2个查询

sql - 使用 SQL 添加/更新批量数据

c# - 订购时使用的最佳 list

sql - 选择字符串后的下一个词 (SQL)