如何按属性SQL对行进行分组



假设我有以下关系:

book_id = (1608, 2934, 1608), stock = (10,20,30)

,可由以下代码生成:

SELECT book_id, stock
FROM editions JOIN stock ON (editions.isbn = stock.isbn);

和我想产生以下关系:

book_id = (1608, 2934), stock =(40,20),其中书1608的两组库存已经加在一起。我该怎么做呢?我试过了:

SELECT book_id, stock
FROM editions JOIN stock ON (editions.isbn = stock.isbn)
GROUP BY book_id;

但这不起作用

谢谢!

您的查询将在大多数数据库中失败,因为stock不是聚合函数的一部分。(唯一接受这种非标准语法的数据库是MySQL。)

您正在寻找sum()函数。我还建议使用表别名:

SELECT e.book_id, sum(s.stock)
FROM editions e JOIN
     stock s
     ON e.isbn = s.isbn
GROUP BY e.book_id;

最新更新