sqlite - 用另一个表的总和更新表中的列
问题描述
我对 SQL 比较陌生,无法解决以下问题。
简而言之,我有两张桌子。我们可以调用第一个表people
:
name
--------
Margaret
Jim
Lola
第二个是expenses
与不同实体关联的不同类型的列表:
name | type | amount
---------+----------+-------
Margaret | personal | 100
Jim | business | 50
Lola | business | 275
Margaret | business | 75
Lola | personal | 10
Margaret | business | 150
Lola | personal | 50
Jim | business | 150
我想在第一个表中添加两列,使其看起来像这样:
name | personal_expenses | business_expenses
---------+-------------------+------------------
Margaret | 100 | 275
Jim | 0 | 200
Lola | 275 | 60
personal_expenses
最初,我希望在添加andbusiness_expenses
列之后,我能够使用以下查询来完成此操作:
UPDATE people
SET personal_expenses = (
SELECT SUM(amount)
FROM expenses
GROUP BY name
);
我也试过:
UPDATE people
SET personal_expenses = (
SELECT SUM(amount)
FROM expenses
WHERE expenses.name = people.name
);
但同样无济于事。
我已经查看了类似问题的几个答案, 但是当我尝试(诚然,也许是错误的)复制它们时,我得到(非常无信息的)语法错误。sqlite3
实现这一分类总和的正确方法是什么sqlite3
?
解决方案
你很亲近!你在你的WHERE
条款中又忘记了一个条件。expense
根据您在表格中提供的示例数据,您示例中的总和也不正确
ALTER TABLE `people` ADD COLUMN `personal_expense` INTEGER;
ALTER TABLE `people` ADD COLUMN `business_expense` INTEGER;
UPDATE people
SET personal_expense = (
SELECT SUM(amount)
FROM expenses
WHERE expenses.type = 'personal'
AND expenses.name = people.name ),
business_expense = (
SELECT SUM(amount)
FROM expenses
WHERE expenses.type = 'business'
AND expenses.name = people.name )
推荐阅读
- google-sheets - 入门级 Google Map Maker 的 KML/GeoJSON/Visualization/Automation 帮助
- php - 123-reg 升级,现在 PHP 包含已停止工作
- java - JDA Bot 未完成加载
- c++ - 在共享库中包含静态库会导致“未定义的引用”
- python - 有没有办法将我在 python 中制作的数据集导出到我的计算机?
- r - 如何在点图中的同一行上绘制不同行的值?
- docker - 构建 mediasoup 演示时,macOS 上的 docker 桌面崩溃
- visual-studio-2019 - 哪些 ANTLR Nuget 包是哪些?
- rendering - GLSL从相机获取特定像素的距离?
- python - 在 tkinter 中绘制图形导致程序在关闭时挂起