【问题标题】:MySQL count/sum fieldsMySQL 计数/总和字段
【发布时间】:2011-02-14 18:10:39
【问题描述】:

我想要实现的是关于日常金融交易的报告。通过我的 SQL 查询,我想计算现金交易的总数、现金总价值以及支票的总价值。我只想在指定日期执行此操作。

这是我遇到问题的查询的 sn-p。这些 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)它会计算现金/支票的所有交易。日期限制似乎消失了。

任何帮助表示赞赏。

【问题讨论】:

  • "而不是选择的日期"...选择了哪个日期?
  • 您查询的“WHERE transactionDate='2010-04-10”部分在哪里?我希望像'payment_type.name=... AND transactionDate=...'这样的东西
  • 我不确定 mysql 是否这样做,但在 oracle 中对所有天进行求和,您可以对 transactionDate 进行 sum(X) 分区
  • 你能发布SHOW CREATE TABLE TRANSACTION的输出吗?

标签: mysql count sum


【解决方案1】:

不需要关联子查询,直接使用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 加入结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多