关于mysql的一个聚合函数问题

现在有一张表,表名就是dingdan吧。具体内容如下:dingdanidkehuiddingdanzhuangtaixiadanriqi(分别表示订单ID、客户ID、订单... 现在有一张表,表名就是dingdan吧。具体内容如下:
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

这个查询语句该怎么写啊?我知道用聚合函数,但是这几列都分别在聚合,就不知道怎么办了。
展开
 我来答
qianlidongqll
2015-07-07 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:80
采纳率:50%
帮助的人:52.4万
展开全部

我来给点建议,我是在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,效果如下:

,t1统计出总数和最后下单日期,

t2就统计出已完成的总数,以kehuid关联应该可以,你看看对你有没有帮助。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式