2014-01-18 57 views
-1

我有4个列的表格: - PaymentID,患者ID,paymentMode,totalPaymentSQL查询用的GroupBy

我试图找到一个病人和支付模式,它支付的最大总付款。

这是我曾尝试:

SELECT paymentMode, MAX(totalPayment) AS MAXIMUM_PAYMENT FROM Payments 
Group By paymentMode 

这将返回最高支付限额和支付方式,但问题是,它就会通过支付方式组合,所以,当我执行这个查询,我得到2个回答。

下面是一个示例输出,我得到:

enter image description here

什么,我想要的只是一个答案,考虑到上面的图像时根本意义,我想只输出记录在2行作为它的支付额比第一排的记录高。是否可以向组By添加条件?

我如何解决这个问题?

谢谢你的时间。

+0

真的吗?好悲伤 – Strawberry

+0

什么是“最高总付款额”?一个数字可以是“最大”或“总数”,都需要第二个维度来定义它们(即时间段)。 –

回答

1

您的表格有四列。你想要最高付款模式吗?或者是付款额最大的模式?第一个是(针对单个患者):

select p.* 
from payments p 
where patient = xxx 
order by totalpayment desc 
limit 1; 

这将返回单个患者的值。

编辑:

如果你想对所有的患者的最高支付方式,你可以使用这个MySQL招:

select patient, max(payment) as maxpayment, 
     substring_index(group_concat(paymentmode), ',', 1) as maxpaymentmode 
from payments p 
group by patient 
+0

我想要最高支付模式。再次感谢 :) –

0

使用HAVING GROUP BY后多个条件

0

如果你想要一个病人支付的总额,为什么你要通过支付模式进行订购?

试试这个:

SELECT paymentMode, MAX(totalPayment) AS MAXIMUM_PAYMENT FROM Payments 
Group By patientID