SQL Practice Logo

SQLPractice Online

Scalar Subqueries: Functions

Module: Subqueries & CTEs

-- ============================================

-- BASIC SCALAR SUBQUERY SYNTAX

-- ============================================

-- Pattern: (SELECT single_value FROM table WHERE conditions)

-- Must return: 1 row, 1 column

-- Returns: A single value or NULL

-- 1. SCALAR SUBQUERY IN SELECT CLAUSE

-- Adds a calculated column to each row

SELECT

name,

salary,

(SELECT AVG(salary) FROM employees) AS company_avg, -- Scalar subquery

salary - (SELECT AVG(salary) FROM employees) AS diff_from_avg

FROM employees;

-- How it works:

-- 1. Subquery executes once: AVG(salary) → 75000

-- 2. Value added to each row as company_avg column

-- 3. Same subquery reused in calculation (cached)

-- Result:

-- name | salary | company_avg | diff_from_avg

-- Alice | 95000 | 75000 | 20000

-- Bob | 85000 | 75000 | 10000

-- Charlie | 65000 | 75000 | -10000

-- 2. SCALAR SUBQUERY IN WHERE CLAUSE

-- Filters rows based on calculated value

SELECT

name,

salary,

department

FROM employees

WHERE salary > (SELECT AVG(salary) FROM employees); -- Scalar subquery

-- How it works:

-- 1. Subquery calculates: AVG(salary) → 75000

-- 2. WHERE becomes: WHERE salary > 75000

-- 3. Only rows with salary > 75000 returned

-- Returns only above-average employees

-- 3. MULTIPLE SCALAR SUBQUERIES

-- Each executes once, results cached

SELECT

name,