SAP HANA - นิพจน์ SQL

นิพจน์ใช้เพื่อประเมินอนุประโยคเพื่อส่งคืนค่า มีนิพจน์ SQL ที่แตกต่างกันที่สามารถใช้ใน HANA -

  • นิพจน์กรณี
  • นิพจน์ฟังก์ชัน
  • นิพจน์รวม
  • แบบสอบถามย่อยในนิพจน์

นิพจน์กรณี

สิ่งนี้ใช้เพื่อส่งผ่านหลายเงื่อนไขในนิพจน์ SQL อนุญาตให้ใช้ตรรกะ IF-ELSE-THEN โดยไม่ต้องใช้โพรซีเดอร์ในคำสั่ง SQL

ตัวอย่าง

SELECT COUNT( CASE WHEN sal < 2000 THEN 1 ELSE NULL END ) count1,
COUNT( CASE WHEN sal BETWEEN 2001 AND 4000 THEN 1 ELSE NULL END ) count2,
COUNT( CASE WHEN sal > 4000 THEN 1 ELSE NULL END ) count3 FROM emp;

คำสั่งนี้จะส่งคืน count1, count2, count3 ด้วยค่าจำนวนเต็มตามเงื่อนไขที่ผ่าน

นิพจน์ฟังก์ชัน

นิพจน์ฟังก์ชันเกี่ยวข้องกับฟังก์ชัน SQL inbuilt ที่จะใช้ในนิพจน์

นิพจน์รวม

ฟังก์ชันรวมใช้ในการคำนวณที่ซับซ้อนเช่น Sum, Percentage, Min, Max, Count, Mode, Median เป็นต้น Aggregate Expression ใช้ฟังก์ชัน Aggregate เพื่อคำนวณค่าเดียวจากหลายค่า

Aggregate Functions- ผลรวมนับต่ำสุดสูงสุด สิ่งเหล่านี้ใช้กับค่าการวัด (ข้อเท็จจริง) และเกี่ยวข้องกับมิติข้อมูลเสมอ

ฟังก์ชันการรวมทั่วไป ได้แก่ -

  • ค่าเฉลี่ย ()
  • นับ ()
  • ขีดสุด ()
  • ค่ามัธยฐาน ()
  • ขั้นต่ำ ()
  • โหมด ()
  • ผลรวม ()

แบบสอบถามย่อยในนิพจน์

แบบสอบถามย่อยเป็นนิพจน์คือคำสั่ง Select เมื่อใช้ในนิพจน์จะส่งกลับค่าศูนย์หรือค่าเดียว

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

สามารถใช้แบบสอบถามย่อยกับคำสั่ง SELECT, INSERT, UPDATE และ DELETE พร้อมกับตัวดำเนินการเช่น =, <,>,> =, <=, IN, BETWEEN เป็นต้น

มีกฎสองสามข้อที่ต้องปฏิบัติตามแบบสอบถามย่อย -

  • แบบสอบถามย่อยต้องอยู่ในวงเล็บ

  • แบบสอบถามย่อยสามารถมีได้เพียงคอลัมน์เดียวในส่วนคำสั่ง SELECT เว้นแต่ว่าจะมีหลายคอลัมน์ในแบบสอบถามหลักเพื่อให้แบบสอบถามย่อยเปรียบเทียบคอลัมน์ที่เลือก

  • ไม่สามารถใช้ ORDER BY ในแบบสอบถามย่อยแม้ว่าแบบสอบถามหลักจะสามารถใช้ ORDER BY ได้ GROUP BY สามารถใช้เพื่อทำฟังก์ชันเดียวกับ ORDER BY ในแบบสอบถามย่อย

  • แบบสอบถามย่อยที่ส่งคืนมากกว่าหนึ่งแถวสามารถใช้ได้กับตัวดำเนินการหลายค่าเท่านั้นเช่นตัวดำเนินการ IN

  • รายการ SELECT ไม่สามารถรวมการอ้างอิงถึงค่าใด ๆ ที่ประเมินเป็น BLOB, ARRAY, CLOB หรือ NCLOB

  • ไม่สามารถใส่เคียวรีย่อยในฟังก์ชัน set ได้ทันที

  • ไม่สามารถใช้ตัวดำเนินการ BETWEEN กับแบบสอบถามย่อยได้ อย่างไรก็ตามสามารถใช้ตัวดำเนินการ BETWEEN ภายในแบบสอบถามย่อยได้

แบบสอบถามย่อยที่มีคำสั่ง SELECT

แบบสอบถามย่อยมักใช้กับคำสั่ง SELECT ไวยากรณ์พื้นฐานมีดังนี้ -

ตัวอย่าง

SELECT * FROM CUSTOMERS
WHERE ID IN (SELECT ID
FROM CUSTOMERS
WHERE SALARY > 4500) ;
+----+----------+-----+---------+----------+
| ID | NAME     | AGE | ADDRESS | SALARY   |
+----+----------+-----+---------+----------+
| 4  | Chaitali | 25  | Mumbai  | 6500.00  |
| 5  | Hardik   | 27  | Bhopal  | 8500.00  |
| 7  | Muffy    | 24  | Indore  | 10000.00 |
+----+----------+-----+---------+----------+