0Pricing
Coding Interview Prep · บทเรียน

คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์

การคำนวณ เลขต่อข้อความ และลำดับความสำคัญของตัวดำเนินการภายในรายการ SELECT

คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์ เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding 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) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์”

การคำนวณ เลขต่อข้อความ และลำดับความสำคัญของตัวดำเนินการภายในรายการ SELECT คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม

ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเลือกคอลัมน์และข้อผิดพลาดของนามแฝง
  2. คอลัมน์คำนวณและลำดับความสำคัญของนิพจน์
  3. DISTINCT เทียบกับ GROUP BY เพื่อหาค่าที่ไม่ซ้ำกัน
  4. นิพจน์ CASE ใน SELECT
← กลับไปที่ Coding Interview Prep