select v.main_pdx,i.name
,count(distinct v.hn) 'cc',count(v.hn) 'visit'
from er_regist er
left join ovst o on o.vn=er.vn
left join vn_stat v on o.vn=v.vn
left join icd101 i on i.code=v.main_pdx
where er.vstdate between '2013-1-1' and '2013-1-31'
and (o.visit_type='O' or dayofweek(er.vstdate) in (1,7)
or er.vstdate in (select holiday_date from holiday))
group by v.main_pdx
order by visit desc,cc desc
limit 30
ระวังคำจำกัดความของคำว่าง นอกเวลาราชการ หมายถึงอะไรกันแน่
ผมใช้ visit_type , dayofweek และ holiday
ลองดูคับ