如何按属性 SQL 对行进行分组
How to group rows by attribute SQL
假设我有以下关系:
book_id = (1608, 2934, 1608), 股票 = (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()
函数。我还推荐 table 别名:
SELECT e.book_id, sum(s.stock)
FROM editions e JOIN
stock s
ON e.isbn = s.isbn
GROUP BY e.book_id;
假设我有以下关系:
book_id = (1608, 2934, 1608), 股票 = (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()
函数。我还推荐 table 别名:
SELECT e.book_id, sum(s.stock)
FROM editions e JOIN
stock s
ON e.isbn = s.isbn
GROUP BY e.book_id;