BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: autobotz ที่ สิงหาคม 16, 2012, 13:53:57 PM

หัวข้อ: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: autobotz ที่ สิงหาคม 16, 2012, 13:53:57 PM
รบกวนทุก ๆ ท่านด้วยนะครับ ผมขอสอบถามตาม รายงานที่แนบมาเลยครับ คือ ....
ติดอย่างเดียวที่จะเรียงลำดับผลรวมจำนวนครั้งที่มารับบริการ จากมากไปหาน้อย จะต้องทำอย่างไรครับ ???
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: nutsuanplu ที่ สิงหาคม 16, 2012, 14:02:49 PM
รบกวนทุก ๆ ท่านด้วยนะครับ ผมขอสอบถามตาม รายงานที่แนบมาเลยครับ คือ ....
ติดอย่างเดียวที่จะเรียงลำดับผลรวมจำนวนครั้งที่มารับบริการ จากมากไปหาน้อย จะต้องทำอย่างไรครับ ???


select a,b,c,count(d) as cc
form ....
where ....
group by d
order by cc desc

ประมาณนี้ครับ
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: autobotz ที่ สิงหาคม 16, 2012, 15:46:17 PM

select a,b,c,count(d) as cc
form ....
where ....
group by d
order by cc desc

ประมาณนี้ครับ

ทำแล้วยังเรียงไม่ได้อยู่ดีครับ  งง เลย 
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: autobotz ที่ สิงหาคม 17, 2012, 10:04:31 AM
จากการทดลองทำแล้ว ก็ยังเรียงลำดับไม่ได้อยู่ดี ถ้ายังไงรบกวนทุก ๆ ท่านช่วยแนะนำแนวทางแก้ไขด้วยครับ  ^^
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: nutsuanplu ที่ สิงหาคม 17, 2012, 10:25:05 AM
จากการทดลองทำแล้ว ก็ยังเรียงลำดับไม่ได้อยู่ดี ถ้ายังไงรบกวนทุก ๆ ท่านช่วยแนะนำแนวทางแก้ไขด้วยครับ  ^^

ก็เรียงได้นะครับ แต่ควรอย่างยิ่งที่จะต้องใส่เงื่อนไขช่วงเวลาไปด้วย
ถ้าฐานข้อมูลใหญ่ๆ จะเอ๋อเร๋อ ได้ครับ

select concat(i.code," ",i.name)as dx_name,count(distinct v.vn)as count_vn,count(distinct v.hn)as count_hn
from vn_stat v
left outer join ovst o on o.vn = v.vn
left outer join icd101 i on i.code = v.pdx
where v.pdx <> "" and v.vstdate between "2012-01-01" and "2012-01-10"
group by i.name
order by count_vn desc
limit 20
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: autobotz ที่ สิงหาคม 17, 2012, 13:36:38 PM
อ้างถึง
ก็เรียงได้นะครับ แต่ควรอย่างยิ่งที่จะต้องใส่เงื่อนไขช่วงเวลาไปด้วย
ถ้าฐานข้อมูลใหญ่ๆ จะเอ๋อเร๋อ ได้ครับ

select concat(i.code," ",i.name)as dx_name,count(distinct v.vn)as count_vn,count(distinct v.hn)as count_hn
from vn_stat v
left outer join ovst o on o.vn = v.vn
left outer join icd101 i on i.code = v.pdx
where v.pdx <> "" and v.vstdate between "2012-01-01" and "2012-01-10"
group by i.name
order by count_vn desc
limit 20


ขอบคุณมากครับ ....เดี๋ยวลองดูอีกรอบครับ ... 
หัวข้อ: Re: สอบถามวิธีการเรียงลำดับ มาก ไปหา น้อย
เริ่มหัวข้อโดย: udomchok ที่ สิงหาคม 17, 2012, 22:30:09 PM
select concat(i.code," ",i.name)as dx_name,count(distinct v.vn)as count_vn,count(distinct v.hn)as count_hn
............


พยายามเขียนให้มีเว้นวรรคจะดีกว่าครับ คือก่อน as เว้นวรรคสักนิดจะดีกว่า
แต่พวก aggregate function เช่น  count() ต้องติดกันนะครับ
ส่วน distinct ใช้ได้ 2 กรณี คือ distinct(hn) อันนี้ใช้วงเล็บติดกับ distinct ได้
แต่ count(distinct hn) แบบนี้ไม่ต้องมีวงเล็บ [อาจจะใช้ count(distinc(hn)) ก็ได้ แต่ผมไม่เคยใช้ครับ]