SELECT SUM(CASE `支付状态` WHEN 2 THEN `支付金额` ELSE 0 END)
专注于为中小企业提供成都网站设计、做网站、成都外贸网站建设公司服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业金门免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
,SUM(CASE `支付状态` WHEN 2 THEN 1 ELSE 0 END)
,SUM(CASE `支付状态` WHEN 1 THEN `支付金额` ELSE 0 END)
,SUM(CASE `支付状态` WHEN 1 THEN 1 ELSE 0 END)
FROM `订单`
这个SQL的结果是这个样子,4个数字表示成功金额、成功笔数、失败金额、失败笔数
123.45 11 2345.67 222
也可以用这样的简单SQL语句统计:
SELECT `支付状态`, COUNT(*), SUM(`支付金额`) FROM `订单`
结果为两行,分别是成功的笔数和金额、失败的比如和金额,例如是这样:
1 11 123.45
2 22 2345.67
输入以下的内容
$link=mysql_connect(’127.0.0.1′,’root’,'root’);
if (!$link) {
die(’Could NOt Connect The Database!: ‘ . mysql_error());
};
SELECT
o1.order_id,
MAX(o1.subtotal) AS 订单总金额,
SUM(o2.cost) AS 订单明细合计
FROM
`order` o1 JOIN order_details o2 ON (o1.order_id = o2.order_id)
GROUP BY
o1.order_id
HAVING
MAX(o1.subtotal) SUM(o2.cost)
你这个wallet应该有和user表关联的外键吧,暂时叫uid吧
select sum(w.blance) from user u left join wallet w on u.userid = w.uid
where u.name = '小明' and w.date between '2017-01-01' and '2018-01-01';
查询小明 2017年1月1日到2018年1月1日的消费总额
w.date between '2017-01-01' and '2018-01-01' 也可以换成
w.date '2017-01-01' and w.date '2018-01-01'
只能你这样查询,然后在程序中处理结果。因为MYSQL语句的结果必须是固定的列数,无法支持可以变化的列数量的。
如果只需要统计项目1、项目2、项目3等有限确定的项目,这个可以用SQL查询,方法是:
SUM(CASE name_id WHEN 1 THEN money ELSE 0) money1
但是你要实现统计表中不确定的项目数量,这个方法是不可能的,也没有其它可能的方法。