2010-05-02 81 views
3

我试图实现的是每日金融交易报告。我想用我的SQL查询来计算现金交易总数,总现金价值和支票的总数。我只想在指定的日期执行此操作。MySQL计数/总计字段

这是查询的一个片段,我遇到了麻烦。这些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)它计算所有交易的现金/支票。日期限制似乎消失了。

任何帮助表示赞赏。

+0

“而不是选定的日期”......选择日期? – aioobe 2010-05-02 12:43:40

+0

'WHERE transactionDate ='2010-04-10'查询的一部分在哪里?我希望像'payment_type.name = ... AND transactionDate = ...' – extraneon 2010-05-02 12:45:13

+0

我不确定如果mysql做到这一点,但在甲骨文总结所有日子,你可以做一个总和(X)分区transactionDate – dangerstat 2010-05-02 12:47:35

回答

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的结果,如果你需要从那里得到的类型名称。