SQLite 在视图中使用 Sum() 函数
Posted
技术标签:
【中文标题】SQLite 在视图中使用 Sum() 函数【英文标题】:SQLite usin Sum()-function in a VIEW 【发布时间】:2016-01-03 13:23:02 【问题描述】:所以我创建了一个视图,在这个视图中我有 person_id、account_id、日期、付款方式和价值。 在付款方式中,我指定了两种不同的方式:提款和存款。提款显示为负值。 我现在要做的是打印出所有提款和存款之和为负数的account_id。
这是我的 CREATE VIEW 代码:
CREATE VIEW payment
( personID, AacountID, date, payment_method, value )
AS SELECT pers_id, acc_id, date, 'deposit', value
FROM deposit
UNION ALL
SELECT pers_id, acc_id, date, 'withdrawal', -value
FROM withdrawal
我不允许在创建视图语句中使用 sum() 函数,我必须在视图上使用查询来打印出所有总体为负值的帐户。 我一直在寻找一段时间,但我刚刚找到了如何在创建视图语句中使用该函数。
【问题讨论】:
“不允许”是什么意思?你有错误吗? 【参考方案1】:我现在要做的是打印出所有 account_id 的总和 取款和存款为负数
和
我不能在创建视图语句中使用 sum() 函数
您可以在视图内使用聚合:
CREATE VIEW payment
AS
SELECT acountID, SUM("value") AS total
FROM (
SELECT acc_id AS acountID, "value"
FROM deposit
UNION ALL
SELECT acc_id, -"value"
FROM withdrawal) AS sub
GROUP BY acountID;
SELECT *
FROM payment
WHERE total < 0;
SqlFiddleDemo
请记住,使用 date/value
之类的关键字是不好的做法。如果您真的需要它们,请使用"
联系它们。
编辑:
'我不允许在创建视图语句中使用 sum() 函数'
再试一次,使用您的视图并使用 HAVING
使用聚合后过滤添加简单聚合:
CREATE VIEW payment
AS
SELECT pers_id, acc_id AS accountID, "date", 'deposit' AS payment_method, "value"
FROM deposit
UNION ALL
SELECT pers_id, acc_id, "date", 'withdrawal', -"value"
FROM withdrawal;
查询:
SELECT accountId, SUM("value") AS total
FROM payment
GROUP BY accountId
HAVING total < 0;
SqlFiddleDemo2
【讨论】:
首先,感谢您的回答,但很抱歉,因为我认为我的问题表达有误。我现在将“不能使用 sum() 函数”更改为“我不允许使用”。我想现在很清楚了。 @grantelbart 查看更新。无论如何,你的问题对我来说还是有点不清楚。以上是关于SQLite 在视图中使用 Sum() 函数的主要内容,如果未能解决你的问题,请参考以下文章
[QT][SQL]sql学习记录5_sqlite视图(View)
在 Android 上用 Java 获取 SQLite SUM
在 SQL Server 2008 中使用集合作为函数/存储过程的参数?
模板未显示通过传递参数使用视图函数从 sqlite 获取的数据(为空白)