Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

มีอนุประโยคใน SQL Server

ส่วนคำสั่ง HAVING ใช้ร่วมกับส่วนคำสั่ง GROUP BY ใน SQL Server (Transact-SQL) เพื่อจำกัดกลุ่มของแถวที่ส่งคืน เมื่อตรงตามเงื่อนไขจะเป็น TRUE เท่านั้น

มีไวยากรณ์ส่วนคำสั่งใน SQL Server

  SELECT bie uthuc1, bieuthuc2, … bieuthuc_n, 
ham_tong (bieuthuc)
FROM bang
[WHERE dieukien]
GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n
HAVING dieukie n_having;

ชื่อตัวแปรหรือค่าตัวแปร

ham_tong

สามารถใช้เป็นฟังก์ชันเช่น SUM, COUNT, MIN, MAX หรือ AVG

bieuthuc1, bieuthuc2, . bieutuc_n

นิพจน์ไม่อยู่ในฟังก์ชันผลรวมและต้องอยู่ในอนุประโยค GROUP BY

WHERE dieukien

ตัวเลือก เงื่อนไขที่บันทึกต้องเป็นไปตามจึงจะเลือกได้

มี dieukien_having

นี่เป็นเงื่อนไขเพิ่มเติมที่ใช้เฉพาะกับผลลัพธ์ทั้งหมดเพื่อจำกัดกลุ่มของแถวที่ส่งคืน เฉพาะกลุ่มที่มีการประเมินเงื่อนไขเท่านั้นที่เป็น TRUE ในชุดผลลัพธ์

ตัวอย่างเช่น - ใช้ฟังก์ชัน SUM

  SELECT bophan, SUM  (soluong) AS 'Tong so luong' 
FROM sanpham
GROUP BY bophan
HAVING SUM (soluong) > 1 00;

ตัวอย่างของคำสั่งย่อย HAVING ด้านบนใช้ฟังก์ชัน SUM เพื่อส่งคืนชื่อแผนกและปริมาณทั้งหมด (ในแผนกที่เกี่ยวข้อง) ส่วนคำสั่ง HAVING จะกรองผลลัพธ์เพื่อส่งคืนเฉพาะส่วนที่มีตัวเลขมากกว่า 100 เท่านั้น

ตัวอย่างเช่น - ใช้ฟังก์ชัน COUNT

  SELECT th anhpho, COUNT (*) AS 'So nhanvien' 
FROM nhanvien
WHERE bang = 'California'
GROUP BY thanhpho
HAVING COUN T (*)> 20;

ตัวอย่างนี้ส่งคืนเมืองและจำนวนพนักงาน (ในเมืองนั้น) ที่อยู่ในแคลิฟอร์เนียในปัจจุบัน ส่วนคำสั่ง HAVING จะกรองเพื่อส่งคืนเฉพาะเมืองที่มีพนักงานมากกว่า 20 คน

ตัวอย่างเช่น - ใช้ฟังก์ชัน MIN

  SELECT bophan, MIN (luong) AS 'Luong thap nhat' 
FROM nhanvien
GROUP BY bophan
HAVING MIN (luong)> = 50000;

ในตัวอย่างนี้ ผลลัพธ์ที่ได้คือชื่อของแต่ละแผนกและค่าแรงขั้นต่ำในแต่ละแผนก มาตรา HAVING จะส่งคืนเฉพาะชิ้นส่วนที่มีค่าแรงขั้นต่ำมากกว่าหรือเท่ากับ $50,000

ตัวอย่างเช่น - ใช้ฟังก์ชัน MAX

  SELECT h o, MAX (luong) AS 'Luong cao nhat' 
FROM nhanvien
GROUP BY bophan
HAVING MA X (luong)> 34000;

ในตัวอย่างสุดท้ายนี้ ผลลัพธ์คือนามสกุลของพนักงานและเงินเดือนสูงสุดสำหรับมูลค่าของครอบครัวนั้น ส่วนคำสั่ง HAVING จะจำกัดเฉพาะค่าที่มีเงินเดือนสูงสุดมากกว่า $ 34,000