使用GroupBy进行SQL查询

时间:2014-01-18 21:54:19

标签: mysql sql database group-by subquery

我有一个包含4列的表格: - PaymentID,患者ID,paymentMode,totalPayment

我试图找到患者支付的最高总支付金额和支付方式。

这就是我的尝试:

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

这会返回最大付款和付款方式,但问题是,它按付款方式分组,因此当我执行此查询时,我会得到2个答案。

以下是我得到的示例输出:

enter image description here

我想要的只是一个答案,只是意味着在考虑上面的图像时,我想只输出2行的记录,因为它比第一行的记录有更高的支付。是否可以向群组添加条件?

我如何解决这个问题?

感谢您的时间。

3 个答案:

答案 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

答案 1 :(得分:0)

在GROUP BY之后使用HAVING获取更多条件

答案 2 :(得分:0)

如果您想要患者支付的总额,您为什么要通过付款方式进行订购?

试试这个:

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