mysql - 关于sql语句中的with从句和group by分组
问题描述
初涉SQL,对于其中with和group by从句搭配sum,max方法的使用逻辑有一些疑问
例如,数据库中有以下几个table
Customer (cusid, cusname, cusphone, cuscity); Driver (did, dname, dphone, dcity); CarOwnership (did, carid); Car (carid, carbrand, carsize); Trips (cusid, carid, did, getontime, getofftime, price, distance);
要output出 carbrand。这个carbrand是最多distinct customer使用过的,即求每一种carbrand的distinct cusid数量sum,再求max这个数量的carbrand,应该如何使用sql语句实现呢?
问题解答
回答1:题主是想选出“乘客最喜爱的车型”。以下Postgresql代码未测试:
select carbrand, count(*) as customersfrom ( select distinct carbrand, cusid from Trips inner join Car using (carid)) as brand_cusidgroup by carbrandorder by customers desclimit 10
brand_cusid是车型-乘客的关系表,已做distinct处理。
然后按carbrand分组并按行数从大到小排序,并显示前10个车型。
注意这些车型有可能是并列第一的。这时可增加limit数量。
相关文章:
1. Navicat for mysql 中以json格式储存的数据存在大量反斜杠,如何去除?2. mysql - mybatis 查询 统计某个列数量 ,根据一个列,分组查询,在xml文件如何接收3. mysql - 连续的24条sql语句,一条条查,还是union all好?4. mysql主从复制 REPLICATE_DO_DB 参数从服务器reboot后每次都回滚为初始设置5. mysql建表报错,查手册看不懂,求解?6. php - mysql连表统计查询7. 好奇,求大神解答,类似淘宝的大购物量网站,订单数据表该怎么设计?8. MySQL数据库中文乱码的原因9. MySQL如何实现表中再嵌套一个表?10. phpStudy怎么把mysql升级到7.x
