MySQL计算/求和字段

3
我想要实现的是每日财务交易报告。通过我的SQL查询,我希望计算现金交易的总数、总金额以及支票交易的同样数据。而我只需要特定日期的交易数据。
以下是我正在遇到问题的查询代码片段。这些 sum 和 count 命令正在处理表中的所有数据,而非选定日期的数据。
(SELECT SUM(amount) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash,
(SELECT COUNT(*) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash_transactions

抱歉,如果我没有发布足够的详细信息,因为我没有时间。如果需要更多信息,请询问...
乾杯。
更新: 我在这里发布了一些关于布局和结果的更多信息:www.conorhackett.com/sql/transaction.html
问题是当我加入payment_table(以便我可以指定payment_type_name而不是id)时,它会计算所有现金/支票的交易。日期限制似乎消失了。
任何帮助都将不胜感激。

“而不是针对所选日期”...哪个选定的日期? - aioobe
你的查询语句中的 'WHERE transactionDate='2010-04-10'' 部分在哪里?我期望看到像 'payment_type.name=... AND transactionDate=...' 这样的语句。 - extraneon
我不确定mysql是否支持此功能,但在oracle中,您可以执行sum(X)partition over transactionDate来对所有日期求和。 - dangerstat
你能发布 SHOW CREATE TABLE TRANSACTION 的输出吗? - Mark Byers
1个回答

3
不需要使用相关子查询,只需使用group by即可。
select
 t.payment_type_id as type_id
,sum(t.amount) as total_cash
,count(*) as total_cash_transactions
from TRANSACTION t
where t.date = '2010-05-01'
group by t.payment_type_id

如果你需要从中得到类型名称,那么你可以将结果与payment_type连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接