คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์
การคำนวณ เลขต่อข้อความ และลำดับความสำคัญของตัวดำเนินการภายในรายการ SELECT
คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์ เป็นบทเรียน SQL Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คอลัมน์คำนวณใน SELECT
คอลัมน์คำนวณคือนิพจน์ใน SELECT ที่คำนวณหาค่าแทนการอ่านค่าจากคอลัมน์โดยตรง เช่น price * quantity ควรตั้งนามแฝงที่สื่อความหมายให้คอลัมน์นี้เสมอ
SELECT product,
price,
quantity,
price * quantity AS line_total
FROM order_items;ตัวดำเนินการทางคณิตศาสตร์
SQL มีตัวดำเนินการทางคณิตศาสตร์ที่คาดไว้ ได้แก่ +, -, *, / รวมถึงการหารเอาเศษ ชนิดข้อมูลของผลลัพธ์จะขึ้นอยู่กับตัวถูกดำเนินการ และนี่คือจุดที่มักเกิดปัญหาถัดไป
SELECT 7 + 3 AS sum_val,
7 - 3 AS diff_val,
7 * 3 AS prod_val,
7 % 3 AS remainder;กับดักการหารจำนวนเต็ม
โปรดระวัง: การหารจำนวนเต็มสองจำนวนจะทำ การหารแบบจำนวนเต็ม ดังนั้น 5 / 2 จึงได้ 2 ไม่ใช่ 2.5 วิธีแก้คือแปลงชนิดข้อมูลของข้างใดข้างหนึ่งเป็นทศนิยมหรือคูณด้วย 1.0
SELECT 5 / 2 AS int_div, -- 2
5 * 1.0 / 2 AS real_div, -- 2.5
CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5ลำดับความสำคัญของตัวดำเนินการ
SQL ใช้ ลำดับความสำคัญแบบเดียวกับคณิตศาสตร์ทั่วไป: * และ / ทำงานก่อน + และ - ดังนั้น 2 + 3 * 4 จึงได้ 14 ไม่ใช่ 20 วงเล็บจะมีสิทธิ์เหนือกฎทั้งหมด
SELECT 2 + 3 * 4 AS no_parens, -- 14
(2 + 3) * 4 AS with_parens; -- 20ลำดับความสำคัญในคำสั่งส่วนลดจริง
ข้อผิดพลาดเกี่ยวกับลำดับความสำคัญมักเกิดกับตรรกะทางธุรกิจ สำหรับราคาที่หักส่วนลด price - price * rate ถูกต้อง เพราะ * ทำงานก่อน ควรตรวจสอบด้วยเหตุผลเสมอว่ากลุ่มนิพจน์ที่ระบบใช้จริงเป็นอย่างไร
SELECT price,
discount_rate,
price - price * discount_rate / 100 AS net_price
FROM products;การต่อข้อความ
การเชื่อมข้อความขึ้นอยู่กับฐานข้อมูล: || ใน Postgres และ SQL มาตรฐาน, + ใน SQL Server และ CONCAT() ใน MySQL CONCAT() เป็นตัวเลือกที่ปลอดภัยและใช้ข้ามฐานข้อมูลได้
-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;
-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;NULL ทำให้การคำนวณเป็น NULL
เรื่องสำคัญคือ การคำนวณใด ๆ ที่มี NULL จะได้ NULL ดังนั้น base_salary + bonus จะได้ NULL สำหรับผู้ที่ไม่มีโบนัส ให้ครอบคอลัมน์ที่อาจมีปัญหาด้วย COALESCE เพื่อกำหนดค่าเริ่มต้น
SELECT base_salary,
bonus,
base_salary + bonus AS unsafe_total,
base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;การต่อข้อความกับ NULL ตามไวยากรณ์แต่ละแบบ
NULL มีผลกับข้อความด้วย และแต่ละไวยากรณ์ก็แตกต่างกัน: Postgres ทำให้ข้อความทั้งหมดหายไป ขณะที่ CONCAT ของ SQL Server ถือว่า NULL เป็นข้อความว่าง ให้ครอบแต่ละส่วนด้วย COALESCE เพื่อให้ผลลัพธ์คาดเดาได้
SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;ฟังก์ชันภายในนิพจน์
คอลัมน์คำนวณสามารถครอบฟังก์ชันอย่าง ROUND, ABS หรือ UPPER ได้อย่างอิสระ การเรียกใช้ฟังก์ชันก็เป็นเพียงนิพจน์อีกแบบหนึ่ง จึงสามารถซ้อนฟังก์ชันไว้ภายในการคำนวณได้
SELECT product,
ROUND(price * quantity * 1.0, 2) AS line_total,
UPPER(product) AS product_caps
FROM order_items;การบังคับชนิดข้อมูลและ CAST
เมื่อชนิดข้อมูลของตัวถูกดำเนินการแตกต่างกัน SQL จะบังคับชนิดข้อมูลโดยปริยาย ซึ่งอาจทำให้เกิดผลลัพธ์ที่คาดไม่ถึง ควรระบุให้ชัดเจนด้วย CAST(expr AS type) ผู้สัมภาษณ์จะมองว่านี่เป็นโค้ดที่รอบคอบและป้องกันปัญหา
SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;นิพจน์บูลีนเป็นคอลัมน์
การเปรียบเทียบอย่าง price > 100 ก็เป็นนิพจน์เช่นกัน Postgres สามารถเลือกนิพจน์นี้เป็น true/false ได้ แต่แนวทางที่ใช้ได้กับฐานข้อมูลทั่วไปคือครอบด้วย CASE เพื่อให้คืนค่า 1/0 หรือป้ายกำกับ
-- Portable
SELECT product,
CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;ตรวจสอบอย่างรวดเร็ว
ประเมินนิพจน์
สรุปทบทวน
สรุป: ตั้งนามแฝงให้คอลัมน์คำนวณ ใช้ CAST สำหรับการหารทศนิยม ใส่ใจเรื่อง ลำดับความสำคัญ ใช้ CONCAT() เพื่อให้ข้อความใช้ข้ามฐานข้อมูลได้ และจำไว้ว่า NULL ทำให้การคำนวณเสียผลลัพธ์ จึงควรป้องกันด้วย COALESCE
คำถามที่พบบ่อย
บทเรียน “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์”
การคำนวณ เลขต่อข้อความ และลำดับความสำคัญของตัวดำเนินการภายในรายการ SELECT คุณปฏิบัติ SQL Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Interview Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Interview Prep นี้ได้ไหม
ได้ บทเรียน SQL Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเลือกคอลัมน์และข้อผิดพลาดของนามแฝง
- คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์
- DISTINCT เทียบกับ GROUP BY เพื่อหาค่าที่ไม่ซ้ำกัน
- นิพจน์ CASE ใน SELECT