2014-06-27 175 views
0

我是一個mysql新手這裏需要一些幫助與sql查詢我無法完全弄清楚。Mysql查詢總和基於該列列值中的一個值

我現在有一個包含這樣的一個表的Transact:

Paytype Amount Date 
Cash 100.0 2013-08-01 
Visa 50.00 2013-09-2 
Check 50.00 2013-11-12 
Cash 75.00 2013-12-01 
Cash 50.00 2013-12-19 
Visa 100.00 2014-3-01 
Cash 20.00 2014-5-20 

金額和支付類型的順序根據交易日期,我希望它可以查詢出成給量的總和表每個paytype和分組由paytype這樣的:

Paytype Total 
Cash 245.00 
Visa 100.00 
Check 50.00 

有它關閉基於日期範圍這麼一說我想基於由二零一三年十二月十五日至2014年5月1日。 目前我只能出去一個單一的總和爲特定paytype與

select paytype, (SUM(IF(paytype = 'Cash', Amount, 0)) from Transact group by paytype. 

請用正確的查詢幫助來執行!非常感謝!

+0

這是一個帶有'where'子句的基本聚集查詢。你熟悉SQL嗎? –

+0

你應該在問題中提出你的問題,並讓這裏的人們弄清楚它不正確的地方。否則,人們會認爲你不知道,只是想讓別人來完成它。 – didierc

+0

嗨,感謝您的回覆,我確實在那裏提出了我的問題。我只知道非常基本的SQL查詢。 我試過 select paytype,SUM(paytype ='Cash')作爲來自Transact group by paytype的總數。 這隻給我現金的總和。 我想我想要的東西,如: 選擇付款,金額爲總金額= SUM(支付='SD')和SUM(支付='C')組付款; – willchye

回答

1

您可以用基本Group BySum查詢做到這一點:

Select Paytype, Sum(Amount) As Total 
From Transact 
Where Date Between '2013-12-15' And '2014-05-01' 
Group by Paytype 
1

你要總結每次支付金額類型的日期間隔。這意味着相當直截了當地成SQL(我認爲):

Select Paytype, sum(Amount) as Total 
From Transact 
Where (`Date` between ?start_date 
    And ?end_date) 
Group by Paytype 

只是要檢查的範圍內更換?start_date?end_date

+0

謝謝!是的,這實際上很簡單直接,我把它複雜化了。因爲如果它只是一個正常的總和(金額),它會將整個列的總和正確嗎?所以我認爲這是行不通的,但我想這就是小組的工作,根據Paytype中的不同值區分每個小組的工作。 – willchye

+0

當你以正確的方式制定它們時,事情很簡單,它是某種東西你學會了練習。我每天都在學習。 – didierc