关于mysql的一个聚合函数问题
dingdanid kehuid dingdanzhuangtai xiadanriqi(分别表示订单ID、客户ID、订单状态、下单日期)
1 1 已完成 2015-7-1
2 1 已完成 2015-7-2
3 1 未完成 2015-7-3
4 2 未完成 2015-7-2
然后还有一张客户的基本信息表,如下:
kehuid kehuname
1 A
2 B
3 C
现在想查询每个客户的已完成订单数、总订单数、最后下单日期,如下
kehuname 已完成数量 总数量 最后下单日期
A 2 3 2015-7-3
B 0 1 2015-7-2
C 0 0 0000-0-0
这个查询语句该怎么写啊?我知道用聚合函数,但是这几列都分别在聚合,就不知道怎么办了。 展开
我来给点建议,我是在oracle数据库下试的,
select d.kehuname 客户名,c.ywc 已完成,c.soyou 所有的,c.zdrq 最大日期 from (select t1.kehuid,t1.soyou,t2.ywc,t1.zdrq from (select a.kehuid kehuid,count(*) soyou,max(a.xiadanriqi) zdrq from dingdan a,kehu b where a.kehuid=b.kehuid group by a.kehuid) t1,
(select a.kehuid kehuid,count(*) ywc from dingdan a,kehu b where a.kehuid=b.kehuid and a.dingdanzhuangtai='已完成' group by a.kehuid) t2
where t1.kehuid=t2.kehuid) c left join kehu d on d.kehuid=c.kehuid
效果是:
谈谈想法,已完成的和总数分开来统计,用2个聚合函数得到结果集t1和t2,效果如下:
t2就统计出已完成的总数,以kehuid关联应该可以,你看看对你有没有帮助。