假设有以下两个表格:
表格1: items
| id | type | amount |
|---|---|---|
| 1 | A | 100 |
| 2 | A | 200 |
| 3 | B | 150 |
| 4 | C | 50 |
表格2: records
| id | item_id | created_at |
|---|---|---|
| 1 | 1 | 2020-01-01 |
| 2 | 1 | 2020-01-02 |
| 3 | 2 | 2020-01-03 |
| 4 | 3 | 2020-01-04 |
| 5 | 4 | 2020-01-05 |
需要按照不同类型求子查询和最新的记录,如下所示:
SELECT items.type, SUM(items.amount) AS total_amount, MAX(records.created_at) AS latest_date FROM items INNER JOIN records ON items.id = records.item_id GROUP BY items.type;
这将返回以下结果:
| type | total_amount | latest_date |
|---|---|---|
| A | 300 | 2020-01-03 |
| B | 150 | 2020-01-04 |
| C | 50 | 2020-01-05 |
以上代码会针对每种类型(A、B、C)进行聚合操作,并算出该类型的所有项目的总金额,以及最新记录的创建日期。
注意,这里用了 INNER JOIN 将两个表格连接起来。如果 items 表格中有某个项目没有匹配的记录,则不会在最终结果集中出现。若需要保留这个项目,可使用 LEFT JOIN 而非 INNER JOIN。
上一篇:按不同类型进行分组列表
下一篇:按不同列查找的熊猫(逐列)