keyboard_tabSkip to content
listGoAPI Essential

พื้นฐาน SQL Query

สารบัญ

Basic Query (CRUD)

CREATE

sql
INSERT INTO Product (name, price) VALUES ('Example Product', 100);

READ

sql
SELECT * FROM Product;
SELECT * FROM Product LIMIT 1; -- เอาแค่ 1 อัน
SELECT * FROM Product ORDER BY id desc; -- เรียง id ย้อนกลับ

UPDATE

sql
UPDATE Product SET name = 'Updated Product', price = 150 WHERE id = 1;
  • พูดเรื่องการใช้ Where

DELETE

sql
DELETE FROM Product WHERE id = 1;

Join Table

เพิ่ม Table

  • Supplier with columns supplier_id, name

Basic JOIN

sql
SELECT p.name, p.price, s.name AS supplier_name
FROM Product p
JOIN Supplier s ON p.supplier_id = s.supplier_id;
  • Left Join
  • Right Join

LATERAL JOIN

sql
SELECT p.name, p.category, p.price, c.cheapest_price
FROM Product p
JOIN LATERAL (
  SELECT MIN(price) as cheapest_price
  FROM Product
  WHERE category = p.category
) c ON true;

Advanced SQL Queries (แบบ Table ตัวเอง)

ปรับโครงสร้างเพิ่มเป็น

- id: primary key, integer
- name: string
- price: integer
- category: string (e.g., 'Electronics', 'Clothing')
- quantity: integer (number of items in stock)
- created_at: timestamp (date and time when the product was added)

Conditional Aggregation

sql
SELECT category, COUNT(*) as total_products,
  COUNT(*) FILTER (WHERE quantity > 50) as high_stock_products
FROM Product
GROUP BY category;

Aggregation with Group By

sql
SELECT category, AVG(price) AS average_price
FROM Product
GROUP BY category;

Window function

sql
SELECT name, category, price, RANK() OVER (PARTITION BY category ORDER BY price DESC) as price_rank
FROM Product;

Common Table Expression (CTE)

sql
SELECT p.name, p.price, p.category
FROM Product p
WHERE p.price > (
  SELECT AVG(price)
  FROM Product
  WHERE category = p.category
);

Subquery in From Clause

sql
SELECT p.name, p.price, p.category
FROM Product p
WHERE p.price > (
  SELECT AVG(price)
  FROM Product
  WHERE category = p.category
);

Subquery in Select Clause

sql
SELECT name, price, category, 
  (SELECT COUNT(*) FROM Product WHERE category = p.category) as total_in_category
FROM Product p;