where和having同时使用,涉及到聚合函数时,只能使用having判断聚合函数。
代码的执行顺序使where无法判断聚合函数。
执行顺序 from-where-group by-having-select-order by- limit
书写顺序 select- from-where-group by-having-order by- limit
1、根据司机完单表求2017年7月1日-2017年7月31日,有过10天以上的完单并且总完单量在20单以上的司机id,司机姓名,司机完单天数、司机完单数
select driver_daily.driver_id,driver_name,count(distinct concat(d_year,d_month,d_day)) as 完单天数,count(distinct order_id) as 完单数
from driver_daily
where d_year=2017 and d_month=7
group by driver_daily.driver_id
having 完单数>20 and 完单天数>10;
2、根据司机信息表(driver_info)和司机汇总表(driver_collect)取出近2017.07.01-2017.07.31完单大于30单的司机姓名及电话
select driver_name,driver_phone
from driver_info
where driver_id in (select driver_id from driver_collect where d_year=2017 and d_month=7 group by driver_id having count(order_id)>30);
订单表是事实表,产品表和品牌是维度表,一事实多维度难道不是星型模式吗?品牌不能与订单表相连,那不就剩一个订单表链接产品表了?那不是交叉吗?