{"id":3223,"date":"2026-01-13T16:06:20","date_gmt":"2026-01-13T08:06:20","guid":{"rendered":"https:\/\/teen.aiproinstitute.com\/?p=3223"},"modified":"2026-01-13T16:20:00","modified_gmt":"2026-01-13T08:20:00","slug":"sql-query-cheat-sheet","status":"publish","type":"post","link":"https:\/\/teen.aiproinstitute.com\/zh\/sql-query-cheat-sheet\/","title":{"rendered":"SQL Query Cheat Sheet"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"3223\" class=\"elementor elementor-3223\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-effdcfe elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"effdcfe\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a4cc122\" data-id=\"a4cc122\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-512f85d elementor-widget elementor-widget-html\" data-id=\"512f85d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>SQL Query Cheat Sheet | AiPro Institute\u2122<\/title>\n    <style>\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background: #ffffff;\n            color: #333;\n            line-height: 1.6;\n            padding: 20px;\n        }\n\n        .container {\n            max-width: 1400px;\n            margin: 0 auto;\n            background: white;\n            padding: 40px;\n            box-shadow: 0 0 20px rgba(0,0,0,0.1);\n        }\n\n        .header {\n            background: linear-gradient(135deg, #7B3FF2 0%, #00A8E8 100%);\n            color: white;\n            padding: 40px;\n            border-radius: 10px;\n            margin-bottom: 30px;\n            text-align: center;\n        }\n\n        .header h1 {\n            font-size: 2.5em;\n            margin-bottom: 10px;\n            font-weight: 700;\n        }\n\n        .header .subtitle {\n            font-size: 1.2em;\n            opacity: 0.95;\n            font-weight: 300;\n        }\n\n        .member-badge {\n            display: inline-block;\n            background: rgba(255,255,255,0.2);\n            padding: 8px 20px;\n            border-radius: 20px;\n            margin-top: 15px;\n            font-size: 0.9em;\n            font-weight: 500;\n        }\n\n        .section {\n            margin-bottom: 40px;\n        }\n\n        .section-header {\n            background: linear-gradient(135deg, #7B3FF2 0%, #00A8E8 100%);\n            color: white;\n            padding: 20px 30px;\n            border-radius: 8px;\n            margin-bottom: 20px;\n            font-size: 1.8em;\n            font-weight: 600;\n        }\n\n        .subsection {\n            margin-bottom: 30px;\n            background: #f8f9fa;\n            padding: 25px;\n            border-radius: 8px;\n            border-left: 5px solid #7B3FF2;\n        }\n\n        .subsection h3 {\n            color: #7B3FF2;\n            font-size: 1.5em;\n            margin-bottom: 15px;\n            font-weight: 600;\n        }\n\n        .sql-card {\n            background: white;\n            padding: 25px;\n            margin-bottom: 20px;\n            border-radius: 8px;\n            border: 2px solid #e0e0e0;\n            transition: all 0.3s ease;\n        }\n\n        .sql-card:hover {\n            border-color: #7B3FF2;\n            box-shadow: 0 4px 12px rgba(123, 63, 242, 0.1);\n        }\n\n        .sql-card h4 {\n            color: #00A8E8;\n            font-size: 1.3em;\n            margin-bottom: 15px;\n            font-weight: 600;\n        }\n\n        .sql-block {\n            background: #1e1e1e;\n            color: #d4d4d4;\n            padding: 20px;\n            border-radius: 8px;\n            overflow-x: auto;\n            font-family: 'Courier New', monospace;\n            margin: 15px 0;\n            font-size: 0.95em;\n            line-height: 1.7;\n        }\n\n        .sql-keyword {\n            color: #569cd6;\n            font-weight: bold;\n        }\n\n        .sql-function {\n            color: #dcdcaa;\n        }\n\n        .sql-string {\n            color: #ce9178;\n        }\n\n        .sql-comment {\n            color: #6a9955;\n        }\n\n        .sql-number {\n            color: #b5cea8;\n        }\n\n        .result-table {\n            width: 100%;\n            border-collapse: collapse;\n            margin: 15px 0;\n            background: white;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n            font-size: 0.9em;\n        }\n\n        .result-table th {\n            background: #f0f0f0;\n            color: #333;\n            padding: 12px;\n            text-align: left;\n            font-weight: 600;\n            border: 1px solid #ddd;\n        }\n\n        .result-table td {\n            padding: 10px;\n            border: 1px solid #ddd;\n        }\n\n        .result-table tr:hover {\n            background: #f8f9fa;\n        }\n\n        .comparison-table {\n            width: 100%;\n            border-collapse: collapse;\n            margin: 20px 0;\n            background: white;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n        }\n\n        .comparison-table th {\n            background: linear-gradient(135deg, #7B3FF2 0%, #00A8E8 100%);\n            color: white;\n            padding: 15px;\n            text-align: left;\n            font-weight: 600;\n        }\n\n        .comparison-table td {\n            padding: 15px;\n            border-bottom: 1px solid #e0e0e0;\n            vertical-align: top;\n        }\n\n        .comparison-table tr:hover {\n            background: #f8f9fa;\n        }\n\n        .best-practice {\n            background: #e3f2fd;\n            border-left: 5px solid #2196f3;\n            padding: 15px;\n            margin: 15px 0;\n            border-radius: 5px;\n        }\n\n        .best-practice strong {\n            color: #1565c0;\n        }\n\n        .pro-tip {\n            background: #e8f5e9;\n            border-left: 5px solid #4caf50;\n            padding: 15px;\n            margin: 15px 0;\n            border-radius: 5px;\n        }\n\n        .pro-tip strong {\n            color: #2e7d32;\n        }\n\n        .warning-box {\n            background: #fff3e0;\n            border-left: 5px solid #ff9800;\n            padding: 15px;\n            margin: 15px 0;\n            border-radius: 5px;\n        }\n\n        .warning-box strong {\n            color: #e65100;\n        }\n\n        .tag {\n            display: inline-block;\n            background: #7B3FF2;\n            color: white;\n            padding: 5px 12px;\n            border-radius: 15px;\n            font-size: 0.85em;\n            margin: 5px 5px 5px 0;\n            font-weight: 500;\n        }\n\n        .tag.basic { background: #4caf50; }\n        .tag.intermediate { background: #ff9800; }\n        .tag.advanced { background: #f44336; }\n        .tag.essential { background: #9c27b0; }\n\n        .syntax-box {\n            background: linear-gradient(135deg, rgba(123, 63, 242, 0.1) 0%, rgba(0, 168, 232, 0.1) 100%);\n            padding: 20px;\n            border-radius: 8px;\n            margin: 15px 0;\n            border-left: 4px solid #7B3FF2;\n            font-family: 'Courier New', monospace;\n        }\n\n        ul, ol {\n            margin-left: 20px;\n            margin-top: 10px;\n        }\n\n        ul li, ol li {\n            margin-bottom: 8px;\n        }\n\n        footer {\n            margin-top: 50px;\n            padding-top: 30px;\n            border-top: 3px solid #7B3FF2;\n            text-align: center;\n            color: #666;\n        }\n\n        .footer-logo {\n            font-size: 1.5em;\n            font-weight: 700;\n            background: linear-gradient(135deg, #7B3FF2 0%, #00A8E8 100%);\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n            background-clip: text;\n            margin-bottom: 10px;\n        }\n\n        @media (max-width: 768px) {\n            .container {\n                padding: 20px;\n            }\n\n            .header h1 {\n                font-size: 1.8em;\n            }\n\n            .section-header {\n                font-size: 1.4em;\n                padding: 15px 20px;\n            }\n\n            .sql-block {\n                font-size: 0.85em;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>\ud83d\uddc4\ufe0f SQL Query Cheat Sheet<\/h1>\n            <div class=\"subtitle\">Complete SQL Reference for Business Data Analysis<\/div>\n            <div class=\"member-badge\">AiPro Institute\u2122 Members Only<\/div>\n        <\/div>\n\n        <!-- SQL Basics -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udcda SQL Fundamentals<\/div>\n\n            <div class=\"subsection\">\n                <h3>What is SQL?<\/h3>\n                <p style=\"font-size: 1.05em; margin-bottom: 15px;\">\n                    SQL (Structured Query Language) is the standard language for managing and querying databases. It's essential for working with data stored in systems like MySQL, PostgreSQL, SQL Server, Oracle, and more. If your company has a database, SQL is how you talk to it.\n                <\/p>\n\n                <div class=\"best-practice\">\n                    <strong>\u2713 Why Learn SQL for Business:<\/strong>\n                    <ul>\n                        <li><strong>Direct Data Access:<\/strong> Query databases without waiting for IT\/analysts<\/li>\n                        <li><strong>Ad-Hoc Analysis:<\/strong> Answer business questions in real-time<\/li>\n                        <li><strong>Report Generation:<\/strong> Create custom reports and dashboards<\/li>\n                        <li><strong>Data Integration:<\/strong> Combine data from multiple sources<\/li>\n                        <li><strong>Performance:<\/strong> Handle millions of rows efficiently<\/li>\n                    <\/ul>\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>Basic SQL Structure<\/h3>\n\n                <div class=\"syntax-box\">\n<span class=\"sql-keyword\">SELECT<\/span> column1, column2          <span class=\"sql-comment\">-- What columns to retrieve<\/span>\n<span class=\"sql-keyword\">FROM<\/span> table_name                <span class=\"sql-comment\">-- Which table to query<\/span>\n<span class=\"sql-keyword\">WHERE<\/span> condition                <span class=\"sql-comment\">-- Filter rows<\/span>\n<span class=\"sql-keyword\">GROUP BY<\/span> column                <span class=\"sql-comment\">-- Group rows for aggregation<\/span>\n<span class=\"sql-keyword\">HAVING<\/span> condition               <span class=\"sql-comment\">-- Filter groups<\/span>\n<span class=\"sql-keyword\">ORDER BY<\/span> column                <span class=\"sql-comment\">-- Sort results<\/span>\n<span class=\"sql-keyword\">LIMIT<\/span> n;                       <span class=\"sql-comment\">-- Limit number of rows<\/span>\n                <\/div>\n\n                <div class=\"pro-tip\">\n                    <strong>\ud83d\udca1 Execution Order:<\/strong> SQL executes in this order: FROM \u2192 WHERE \u2192 GROUP BY \u2192 HAVING \u2192 SELECT \u2192 ORDER BY \u2192 LIMIT. This explains why you can't use column aliases in WHERE but can in HAVING.\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- SELECT Queries -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udd0d SELECT Queries (Retrieving Data)<\/div>\n\n            <div class=\"subsection\">\n                <h3>Basic SELECT<\/h3>\n                <span class=\"tag basic\">Basic<\/span>\n                <span class=\"tag essential\">Essential<\/span>\n\n                <div class=\"sql-card\">\n                    <h4>Select All Columns<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Select everything from customers table<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> *\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Limit to first 10 rows<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> *\n<span class=\"sql-keyword\">FROM<\/span> customers\n<span class=\"sql-keyword\">LIMIT<\/span> <span class=\"sql-number\">10<\/span>;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>Select Specific Columns<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Select only name and email<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> first_name, last_name, email\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Column aliases for better readability<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    first_name <span class=\"sql-keyword\">AS<\/span> <span class=\"sql-string\">\"First Name\"<\/span>,\n    last_name <span class=\"sql-keyword\">AS<\/span> <span class=\"sql-string\">\"Last Name\"<\/span>,\n    email <span class=\"sql-keyword\">AS<\/span> <span class=\"sql-string\">\"Email Address\"<\/span>\n<span class=\"sql-keyword\">FROM<\/span> customers;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>Calculated Columns<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Calculate revenue<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    product_name,\n    price,\n    quantity,\n    price * quantity <span class=\"sql-keyword\">AS<\/span> revenue\n<span class=\"sql-keyword\">FROM<\/span> sales;\n\n<span class=\"sql-comment\">-- String concatenation<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    first_name || <span class=\"sql-string\">' '<\/span> || last_name <span class=\"sql-keyword\">AS<\/span> full_name,\n    email\n<span class=\"sql-keyword\">FROM<\/span> customers;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>DISTINCT (Unique Values)<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Get unique countries<\/span>\n<span class=\"sql-keyword\">SELECT DISTINCT<\/span> country\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Count unique values<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">COUNT<\/span>(<span class=\"sql-keyword\">DISTINCT<\/span> customer_id) <span class=\"sql-keyword\">AS<\/span> total_customers\n<span class=\"sql-keyword\">FROM<\/span> orders;\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>WHERE Clause (Filtering)<\/h3>\n                <span class=\"tag basic\">Basic<\/span>\n                <span class=\"tag essential\">Essential<\/span>\n\n                <div class=\"sql-card\">\n                    <h4>Comparison Operators<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Equal to<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products <span class=\"sql-keyword\">WHERE<\/span> category = <span class=\"sql-string\">'Electronics'<\/span>;\n\n<span class=\"sql-comment\">-- Greater than \/ Less than<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> orders <span class=\"sql-keyword\">WHERE<\/span> total_amount > <span class=\"sql-number\">1000<\/span>;\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products <span class=\"sql-keyword\">WHERE<\/span> price <= <span class=\"sql-number\">50<\/span>;\n\n<span class=\"sql-comment\">-- Not equal<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> status != <span class=\"sql-string\">'Inactive'<\/span>;\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> status <> <span class=\"sql-string\">'Inactive'<\/span>;\n\n<span class=\"sql-comment\">-- Between range<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products \n<span class=\"sql-keyword\">WHERE<\/span> price <span class=\"sql-keyword\">BETWEEN<\/span> <span class=\"sql-number\">50<\/span> <span class=\"sql-keyword\">AND<\/span> <span class=\"sql-number\">200<\/span>;\n\n<span class=\"sql-comment\">-- In a list<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers \n<span class=\"sql-keyword\">WHERE<\/span> country <span class=\"sql-keyword\">IN<\/span> (<span class=\"sql-string\">'USA'<\/span>, <span class=\"sql-string\">'Canada'<\/span>, <span class=\"sql-string\">'Mexico'<\/span>);\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>Multiple Conditions (AND, OR, NOT)<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- AND: Both conditions must be true<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">WHERE<\/span> category = <span class=\"sql-string\">'Electronics'<\/span> <span class=\"sql-keyword\">AND<\/span> price < <span class=\"sql-number\">500<\/span>;\n\n<span class=\"sql-comment\">-- OR: Either condition can be true<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers\n<span class=\"sql-keyword\">WHERE<\/span> country = <span class=\"sql-string\">'USA'<\/span> <span class=\"sql-keyword\">OR<\/span> country = <span class=\"sql-string\">'Canada'<\/span>;\n\n<span class=\"sql-comment\">-- NOT: Negate condition<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> orders\n<span class=\"sql-keyword\">WHERE<\/span> <span class=\"sql-keyword\">NOT<\/span> status = <span class=\"sql-string\">'Cancelled'<\/span>;\n\n<span class=\"sql-comment\">-- Complex conditions with parentheses<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">WHERE<\/span> (category = <span class=\"sql-string\">'Electronics'<\/span> <span class=\"sql-keyword\">OR<\/span> category = <span class=\"sql-string\">'Computers'<\/span>)\n  <span class=\"sql-keyword\">AND<\/span> price > <span class=\"sql-number\">100<\/span>\n  <span class=\"sql-keyword\">AND<\/span> in_stock = <span class=\"sql-keyword\">TRUE<\/span>;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>Pattern Matching (LIKE)<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- % = any sequence of characters<\/span>\n<span class=\"sql-comment\">-- _ = single character<\/span>\n\n<span class=\"sql-comment\">-- Starts with 'John'<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> first_name <span class=\"sql-keyword\">LIKE<\/span> <span class=\"sql-string\">'John%'<\/span>;\n\n<span class=\"sql-comment\">-- Ends with '.com'<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> email <span class=\"sql-keyword\">LIKE<\/span> <span class=\"sql-string\">'%.com'<\/span>;\n\n<span class=\"sql-comment\">-- Contains 'sales'<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> company <span class=\"sql-keyword\">LIKE<\/span> <span class=\"sql-string\">'%sales%'<\/span>;\n\n<span class=\"sql-comment\">-- Exactly 5 characters<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products <span class=\"sql-keyword\">WHERE<\/span> sku <span class=\"sql-keyword\">LIKE<\/span> <span class=\"sql-string\">'_____'<\/span>;\n\n<span class=\"sql-comment\">-- Case-insensitive (varies by database)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> <span class=\"sql-function\">LOWER<\/span>(email) <span class=\"sql-keyword\">LIKE<\/span> <span class=\"sql-string\">'%@gmail.com'<\/span>;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>NULL Values<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Find NULL values<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> phone <span class=\"sql-keyword\">IS NULL<\/span>;\n\n<span class=\"sql-comment\">-- Find NOT NULL values<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers <span class=\"sql-keyword\">WHERE<\/span> phone <span class=\"sql-keyword\">IS NOT NULL<\/span>;\n\n<span class=\"sql-comment\">-- Replace NULL with default value<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    first_name,\n    <span class=\"sql-function\">COALESCE<\/span>(phone, <span class=\"sql-string\">'No phone'<\/span>) <span class=\"sql-keyword\">AS<\/span> phone\n<span class=\"sql-keyword\">FROM<\/span> customers;\n                    <\/div>\n\n                    <div class=\"warning-box\">\n                        <strong>\u26a0\ufe0f Important:<\/strong> Never use <code>= NULL<\/code> or <code>!= NULL<\/code>. Always use <code>IS NULL<\/code> or <code>IS NOT NULL<\/code> because NULL represents \"unknown\" and doesn't equal anything (not even itself).\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>Sorting Results (ORDER BY)<\/h3>\n                <span class=\"tag basic\">Basic<\/span>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Sort ascending (A-Z, 0-9, default)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">ORDER BY<\/span> price <span class=\"sql-keyword\">ASC<\/span>;\n\n<span class=\"sql-comment\">-- Sort descending (Z-A, 9-0)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">ORDER BY<\/span> price <span class=\"sql-keyword\">DESC<\/span>;\n\n<span class=\"sql-comment\">-- Sort by multiple columns<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers\n<span class=\"sql-keyword\">ORDER BY<\/span> country <span class=\"sql-keyword\">ASC<\/span>, last_name <span class=\"sql-keyword\">ASC<\/span>;\n\n<span class=\"sql-comment\">-- Sort by calculated column<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    product_name,\n    price * quantity <span class=\"sql-keyword\">AS<\/span> revenue\n<span class=\"sql-keyword\">FROM<\/span> sales\n<span class=\"sql-keyword\">ORDER BY<\/span> revenue <span class=\"sql-keyword\">DESC<\/span>;\n\n<span class=\"sql-comment\">-- NULL handling (NULLS FIRST or NULLS LAST)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> customers\n<span class=\"sql-keyword\">ORDER BY<\/span> phone <span class=\"sql-keyword\">DESC NULLS LAST<\/span>;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Aggregate Functions -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udcca Aggregate Functions<\/div>\n\n            <div class=\"subsection\">\n                <h3>Common Aggregate Functions<\/h3>\n                <span class=\"tag basic\">Basic<\/span>\n                <span class=\"tag essential\">Essential<\/span>\n\n                <div class=\"sql-card\">\n                    <h4>COUNT, SUM, AVG, MIN, MAX<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Count total rows<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> total_orders\n<span class=\"sql-keyword\">FROM<\/span> orders;\n\n<span class=\"sql-comment\">-- Count non-NULL values<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">COUNT<\/span>(phone) <span class=\"sql-keyword\">AS<\/span> customers_with_phone\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Sum of column<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">SUM<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> total_revenue\n<span class=\"sql-keyword\">FROM<\/span> orders;\n\n<span class=\"sql-comment\">-- Average<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">AVG<\/span>(price) <span class=\"sql-keyword\">AS<\/span> average_price\n<span class=\"sql-keyword\">FROM<\/span> products;\n\n<span class=\"sql-comment\">-- Minimum and Maximum<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">MIN<\/span>(price) <span class=\"sql-keyword\">AS<\/span> lowest_price,\n    <span class=\"sql-function\">MAX<\/span>(price) <span class=\"sql-keyword\">AS<\/span> highest_price\n<span class=\"sql-keyword\">FROM<\/span> products;\n\n<span class=\"sql-comment\">-- Multiple aggregates together<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> total_orders,\n    <span class=\"sql-function\">SUM<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> total_revenue,\n    <span class=\"sql-function\">AVG<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> avg_order_value,\n    <span class=\"sql-function\">MIN<\/span>(order_date) <span class=\"sql-keyword\">AS<\/span> first_order,\n    <span class=\"sql-function\">MAX<\/span>(order_date) <span class=\"sql-keyword\">AS<\/span> last_order\n<span class=\"sql-keyword\">FROM<\/span> orders;\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>GROUP BY (Grouping & Aggregation)<\/h3>\n                <span class=\"tag intermediate\">Intermediate<\/span>\n                <span class=\"tag essential\">Essential<\/span>\n\n                <div class=\"sql-card\">\n                    <h4>Basic Grouping<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Total sales per product category<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    <span class=\"sql-function\">SUM<\/span>(revenue) <span class=\"sql-keyword\">AS<\/span> total_sales,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> num_products\n<span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">GROUP BY<\/span> category;\n\n<span class=\"sql-comment\">-- Average order value per customer<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    customer_id,\n    <span class=\"sql-function\">AVG<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> avg_order_value,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> total_orders\n<span class=\"sql-keyword\">FROM<\/span> orders\n<span class=\"sql-keyword\">GROUP BY<\/span> customer_id;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>Multiple Columns Grouping<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Sales by category and region<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    region,\n    <span class=\"sql-function\">SUM<\/span>(revenue) <span class=\"sql-keyword\">AS<\/span> total_sales,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> num_orders\n<span class=\"sql-keyword\">FROM<\/span> sales\n<span class=\"sql-keyword\">GROUP BY<\/span> category, region\n<span class=\"sql-keyword\">ORDER BY<\/span> total_sales <span class=\"sql-keyword\">DESC<\/span>;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>HAVING Clause (Filter Groups)<\/h4>\n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Find customers with more than 5 orders<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    customer_id,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> total_orders,\n    <span class=\"sql-function\">SUM<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> lifetime_value\n<span class=\"sql-keyword\">FROM<\/span> orders\n<span class=\"sql-keyword\">GROUP BY<\/span> customer_id\n<span class=\"sql-keyword\">HAVING<\/span> <span class=\"sql-function\">COUNT<\/span>(*) > <span class=\"sql-number\">5<\/span>;\n\n<span class=\"sql-comment\">-- Categories with average price > $50<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    <span class=\"sql-function\">AVG<\/span>(price) <span class=\"sql-keyword\">AS<\/span> avg_price,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> num_products\n<span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">GROUP BY<\/span> category\n<span class=\"sql-keyword\">HAVING<\/span> <span class=\"sql-function\">AVG<\/span>(price) > <span class=\"sql-number\">50<\/span>;\n\n<span class=\"sql-comment\">-- Multiple HAVING conditions<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    <span class=\"sql-function\">SUM<\/span>(revenue) <span class=\"sql-keyword\">AS<\/span> total_sales,\n    <span class=\"sql-function\">COUNT<\/span>(*) <span class=\"sql-keyword\">AS<\/span> num_products\n<span class=\"sql-keyword\">FROM<\/span> sales\n<span class=\"sql-keyword\">GROUP BY<\/span> category\n<span class=\"sql-keyword\">HAVING<\/span> <span class=\"sql-function\">SUM<\/span>(revenue) > <span class=\"sql-number\">10000<\/span> <span class=\"sql-keyword\">AND<\/span> <span class=\"sql-function\">COUNT<\/span>(*) > <span class=\"sql-number\">10<\/span>;\n                    <\/div>\n\n                    <div class=\"pro-tip\">\n                        <strong>\ud83d\udca1 WHERE vs HAVING:<\/strong> Use WHERE to filter rows before grouping, HAVING to filter groups after aggregation. WHERE is faster because it reduces data before grouping.\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- JOINS -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udd17 JOINs (Combining Tables)<\/div>\n\n            <div class=\"subsection\">\n                <h3>Types of JOINs<\/h3>\n\n                <div class=\"sql-card\">\n                    <h4>INNER JOIN (Most Common)<\/h4>\n                    <span class=\"tag intermediate\">Intermediate<\/span>\n                    <span class=\"tag essential\">Essential<\/span>\n                    \n                    <p style=\"margin: 15px 0;\">Returns only matching rows from both tables.<\/p>\n                    \n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Get orders with customer information<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    o.order_id,\n    o.order_date,\n    o.total_amount,\n    c.first_name,\n    c.last_name,\n    c.email\n<span class=\"sql-keyword\">FROM<\/span> orders o\n<span class=\"sql-keyword\">INNER JOIN<\/span> customers c <span class=\"sql-keyword\">ON<\/span> o.customer_id = c.customer_id;\n\n<span class=\"sql-comment\">-- Join multiple tables<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    o.order_id,\n    c.first_name,\n    c.last_name,\n    p.product_name,\n    oi.quantity,\n    oi.price\n<span class=\"sql-keyword\">FROM<\/span> orders o\n<span class=\"sql-keyword\">INNER JOIN<\/span> customers c <span class=\"sql-keyword\">ON<\/span> o.customer_id = c.customer_id\n<span class=\"sql-keyword\">INNER JOIN<\/span> order_items oi <span class=\"sql-keyword\">ON<\/span> o.order_id = oi.order_id\n<span class=\"sql-keyword\">INNER JOIN<\/span> products p <span class=\"sql-keyword\">ON<\/span> oi.product_id = p.product_id;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>LEFT JOIN (LEFT OUTER JOIN)<\/h4>\n                    <span class=\"tag intermediate\">Intermediate<\/span>\n                    \n                    <p style=\"margin: 15px 0;\">Returns all rows from left table, matching rows from right table (NULL if no match).<\/p>\n                    \n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Get all customers and their orders (including customers with no orders)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    c.customer_id,\n    c.first_name,\n    c.last_name,\n    <span class=\"sql-function\">COUNT<\/span>(o.order_id) <span class=\"sql-keyword\">AS<\/span> total_orders,\n    <span class=\"sql-function\">SUM<\/span>(o.total_amount) <span class=\"sql-keyword\">AS<\/span> lifetime_value\n<span class=\"sql-keyword\">FROM<\/span> customers c\n<span class=\"sql-keyword\">LEFT JOIN<\/span> orders o <span class=\"sql-keyword\">ON<\/span> c.customer_id = o.customer_id\n<span class=\"sql-keyword\">GROUP BY<\/span> c.customer_id, c.first_name, c.last_name;\n\n<span class=\"sql-comment\">-- Find customers with NO orders<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> c.*\n<span class=\"sql-keyword\">FROM<\/span> customers c\n<span class=\"sql-keyword\">LEFT JOIN<\/span> orders o <span class=\"sql-keyword\">ON<\/span> c.customer_id = o.customer_id\n<span class=\"sql-keyword\">WHERE<\/span> o.order_id <span class=\"sql-keyword\">IS NULL<\/span>;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>RIGHT JOIN (Less Common)<\/h4>\n                    <p style=\"margin: 15px 0;\">Returns all rows from right table, matching rows from left table.<\/p>\n                    \n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Same as LEFT JOIN but reversed<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> *\n<span class=\"sql-keyword\">FROM<\/span> orders o\n<span class=\"sql-keyword\">RIGHT JOIN<\/span> customers c <span class=\"sql-keyword\">ON<\/span> o.customer_id = c.customer_id;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>FULL OUTER JOIN<\/h4>\n                    <p style=\"margin: 15px 0;\">Returns all rows from both tables (NULLs where no match).<\/p>\n                    \n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Get all customers and all orders<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> *\n<span class=\"sql-keyword\">FROM<\/span> customers c\n<span class=\"sql-keyword\">FULL OUTER JOIN<\/span> orders o <span class=\"sql-keyword\">ON<\/span> c.customer_id = o.customer_id;\n                    <\/div>\n                <\/div>\n\n                <div class=\"sql-card\">\n                    <h4>SELF JOIN<\/h4>\n                    <p style=\"margin: 15px 0;\">Join table to itself (useful for hierarchical data).<\/p>\n                    \n                    <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Find employees and their managers<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    e.employee_id,\n    e.first_name <span class=\"sql-keyword\">AS<\/span> employee_name,\n    m.first_name <span class=\"sql-keyword\">AS<\/span> manager_name\n<span class=\"sql-keyword\">FROM<\/span> employees e\n<span class=\"sql-keyword\">LEFT JOIN<\/span> employees m <span class=\"sql-keyword\">ON<\/span> e.manager_id = m.employee_id;\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Subqueries -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udce6 Subqueries<\/div>\n\n            <div class=\"subsection\">\n                <h3>Subqueries in WHERE Clause<\/h3>\n                <span class=\"tag intermediate\">Intermediate<\/span>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Find products more expensive than average<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> product_name, price\n<span class=\"sql-keyword\">FROM<\/span> products\n<span class=\"sql-keyword\">WHERE<\/span> price > (<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">AVG<\/span>(price) <span class=\"sql-keyword\">FROM<\/span> products);\n\n<span class=\"sql-comment\">-- Find customers who placed orders in 2024<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> *\n<span class=\"sql-keyword\">FROM<\/span> customers\n<span class=\"sql-keyword\">WHERE<\/span> customer_id <span class=\"sql-keyword\">IN<\/span> (\n    <span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-keyword\">DISTINCT<\/span> customer_id\n    <span class=\"sql-keyword\">FROM<\/span> orders\n    <span class=\"sql-keyword\">WHERE<\/span> order_date >= <span class=\"sql-string\">'2024-01-01'<\/span>\n);\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>Subqueries in FROM Clause<\/h3>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Calculate percentage of total for each category<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    total_sales,\n    (<span class=\"sql-number\">100.0<\/span> * total_sales \/ overall_total) <span class=\"sql-keyword\">AS<\/span> percentage\n<span class=\"sql-keyword\">FROM<\/span> (\n    <span class=\"sql-keyword\">SELECT<\/span> \n        category,\n        <span class=\"sql-function\">SUM<\/span>(revenue) <span class=\"sql-keyword\">AS<\/span> total_sales\n    <span class=\"sql-keyword\">FROM<\/span> sales\n    <span class=\"sql-keyword\">GROUP BY<\/span> category\n) category_sales\n<span class=\"sql-keyword\">CROSS JOIN<\/span> (\n    <span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">SUM<\/span>(revenue) <span class=\"sql-keyword\">AS<\/span> overall_total <span class=\"sql-keyword\">FROM<\/span> sales\n) total;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Date\/Time Functions -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udcc5 Date & Time Functions<\/div>\n\n            <div class=\"subsection\">\n                <h3>Common Date Operations<\/h3>\n                <span class=\"tag intermediate\">Intermediate<\/span>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Current date\/time<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">CURRENT_DATE<\/span>,           <span class=\"sql-comment\">-- 2024-01-15<\/span>\n    <span class=\"sql-function\">CURRENT_TIMESTAMP<\/span>,      <span class=\"sql-comment\">-- 2024-01-15 10:30:45<\/span>\n    <span class=\"sql-function\">NOW<\/span>();                  <span class=\"sql-comment\">-- Current timestamp<\/span>\n\n<span class=\"sql-comment\">-- Extract parts of date<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    order_date,\n    <span class=\"sql-function\">EXTRACT<\/span>(<span class=\"sql-keyword\">YEAR FROM<\/span> order_date) <span class=\"sql-keyword\">AS<\/span> year,\n    <span class=\"sql-function\">EXTRACT<\/span>(<span class=\"sql-keyword\">MONTH FROM<\/span> order_date) <span class=\"sql-keyword\">AS<\/span> month,\n    <span class=\"sql-function\">EXTRACT<\/span>(<span class=\"sql-keyword\">DAY FROM<\/span> order_date) <span class=\"sql-keyword\">AS<\/span> day\n<span class=\"sql-keyword\">FROM<\/span> orders;\n\n<span class=\"sql-comment\">-- Date arithmetic<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    order_date,\n    order_date + <span class=\"sql-keyword\">INTERVAL<\/span> <span class=\"sql-string\">'7 days'<\/span> <span class=\"sql-keyword\">AS<\/span> due_date,\n    order_date - <span class=\"sql-keyword\">INTERVAL<\/span> <span class=\"sql-string\">'30 days'<\/span> <span class=\"sql-keyword\">AS<\/span> one_month_ago\n<span class=\"sql-keyword\">FROM<\/span> orders;\n\n<span class=\"sql-comment\">-- Date filtering<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> orders\n<span class=\"sql-keyword\">WHERE<\/span> order_date >= <span class=\"sql-string\">'2024-01-01'<\/span>\n  <span class=\"sql-keyword\">AND<\/span> order_date < <span class=\"sql-string\">'2025-01-01'<\/span>;\n\n<span class=\"sql-comment\">-- Last 30 days<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> * <span class=\"sql-keyword\">FROM<\/span> orders\n<span class=\"sql-keyword\">WHERE<\/span> order_date >= <span class=\"sql-function\">CURRENT_DATE<\/span> - <span class=\"sql-keyword\">INTERVAL<\/span> <span class=\"sql-string\">'30 days'<\/span>;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- String Functions -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udd24 String Functions<\/div>\n\n            <div class=\"subsection\">\n                <h3>Text Manipulation<\/h3>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Concatenation<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> first_name || <span class=\"sql-string\">' '<\/span> || last_name <span class=\"sql-keyword\">AS<\/span> full_name\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Upper\/Lower case<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">UPPER<\/span>(email) <span class=\"sql-keyword\">AS<\/span> email_upper,\n    <span class=\"sql-function\">LOWER<\/span>(email) <span class=\"sql-keyword\">AS<\/span> email_lower\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Length<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> product_name, <span class=\"sql-function\">LENGTH<\/span>(product_name) <span class=\"sql-keyword\">AS<\/span> name_length\n<span class=\"sql-keyword\">FROM<\/span> products;\n\n<span class=\"sql-comment\">-- Substring<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    email,\n    <span class=\"sql-function\">SUBSTRING<\/span>(email, <span class=\"sql-number\">1<\/span>, <span class=\"sql-function\">POSITION<\/span>(<span class=\"sql-string\">'@'<\/span> <span class=\"sql-keyword\">IN<\/span> email) - <span class=\"sql-number\">1<\/span>) <span class=\"sql-keyword\">AS<\/span> username\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- Trim whitespace<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">TRIM<\/span>(<span class=\"sql-string\">'  hello  '<\/span>);  <span class=\"sql-comment\">-- 'hello'<\/span>\n\n<span class=\"sql-comment\">-- Replace<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> <span class=\"sql-function\">REPLACE<\/span>(phone, <span class=\"sql-string\">'-'<\/span>, <span class=\"sql-string\">''<\/span>) <span class=\"sql-keyword\">AS<\/span> clean_phone\n<span class=\"sql-keyword\">FROM<\/span> customers;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- CASE Statements -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udd00 CASE Statements (Conditional Logic)<\/div>\n\n            <div class=\"subsection\">\n                <h3>IF-THEN-ELSE in SQL<\/h3>\n                <span class=\"tag intermediate\">Intermediate<\/span>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Simple CASE<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    product_name,\n    price,\n    <span class=\"sql-keyword\">CASE<\/span>\n        <span class=\"sql-keyword\">WHEN<\/span> price < <span class=\"sql-number\">50<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-string\">'Budget'<\/span>\n        <span class=\"sql-keyword\">WHEN<\/span> price < <span class=\"sql-number\">200<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-string\">'Standard'<\/span>\n        <span class=\"sql-keyword\">ELSE<\/span> <span class=\"sql-string\">'Premium'<\/span>\n    <span class=\"sql-keyword\">END AS<\/span> price_category\n<span class=\"sql-keyword\">FROM<\/span> products;\n\n<span class=\"sql-comment\">-- Customer segmentation<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    customer_id,\n    first_name,\n    last_name,\n    total_purchases,\n    <span class=\"sql-keyword\">CASE<\/span>\n        <span class=\"sql-keyword\">WHEN<\/span> total_purchases > <span class=\"sql-number\">10000<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-string\">'VIP'<\/span>\n        <span class=\"sql-keyword\">WHEN<\/span> total_purchases > <span class=\"sql-number\">5000<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-string\">'Gold'<\/span>\n        <span class=\"sql-keyword\">WHEN<\/span> total_purchases > <span class=\"sql-number\">1000<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-string\">'Silver'<\/span>\n        <span class=\"sql-keyword\">ELSE<\/span> <span class=\"sql-string\">'Bronze'<\/span>\n    <span class=\"sql-keyword\">END AS<\/span> customer_tier\n<span class=\"sql-keyword\">FROM<\/span> customers;\n\n<span class=\"sql-comment\">-- CASE in aggregation<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">COUNT<\/span>(<span class=\"sql-keyword\">CASE WHEN<\/span> status = <span class=\"sql-string\">'Active'<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-number\">1<\/span> <span class=\"sql-keyword\">END<\/span>) <span class=\"sql-keyword\">AS<\/span> active_count,\n    <span class=\"sql-function\">COUNT<\/span>(<span class=\"sql-keyword\">CASE WHEN<\/span> status = <span class=\"sql-string\">'Inactive'<\/span> <span class=\"sql-keyword\">THEN<\/span> <span class=\"sql-number\">1<\/span> <span class=\"sql-keyword\">END<\/span>) <span class=\"sql-keyword\">AS<\/span> inactive_count\n<span class=\"sql-keyword\">FROM<\/span> customers;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Window Functions -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83e\ude9f Window Functions<\/div>\n\n            <div class=\"subsection\">\n                <h3>Advanced Analytics<\/h3>\n                <span class=\"tag advanced\">Advanced<\/span>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Running total<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    order_date,\n    total_amount,\n    <span class=\"sql-function\">SUM<\/span>(total_amount) <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">ORDER BY<\/span> order_date) <span class=\"sql-keyword\">AS<\/span> running_total\n<span class=\"sql-keyword\">FROM<\/span> orders;\n\n<span class=\"sql-comment\">-- Rank products by price within category<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    category,\n    product_name,\n    price,\n    <span class=\"sql-function\">RANK<\/span>() <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">PARTITION BY<\/span> category <span class=\"sql-keyword\">ORDER BY<\/span> price <span class=\"sql-keyword\">DESC<\/span>) <span class=\"sql-keyword\">AS<\/span> price_rank\n<span class=\"sql-keyword\">FROM<\/span> products;\n\n<span class=\"sql-comment\">-- Moving average (last 3 months)<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    month,\n    revenue,\n    <span class=\"sql-function\">AVG<\/span>(revenue) <span class=\"sql-keyword\">OVER<\/span> (\n        <span class=\"sql-keyword\">ORDER BY<\/span> month \n        <span class=\"sql-keyword\">ROWS BETWEEN<\/span> <span class=\"sql-number\">2<\/span> <span class=\"sql-keyword\">PRECEDING AND CURRENT ROW<\/span>\n    ) <span class=\"sql-keyword\">AS<\/span> moving_avg\n<span class=\"sql-keyword\">FROM<\/span> monthly_sales;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Common Business Queries -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udcbc Common Business Query Patterns<\/div>\n\n            <div class=\"subsection\">\n                <h3>Top N Analysis<\/h3>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Top 10 customers by revenue<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    c.customer_id,\n    c.first_name,\n    c.last_name,\n    <span class=\"sql-function\">SUM<\/span>(o.total_amount) <span class=\"sql-keyword\">AS<\/span> lifetime_value\n<span class=\"sql-keyword\">FROM<\/span> customers c\n<span class=\"sql-keyword\">JOIN<\/span> orders o <span class=\"sql-keyword\">ON<\/span> c.customer_id = o.customer_id\n<span class=\"sql-keyword\">GROUP BY<\/span> c.customer_id, c.first_name, c.last_name\n<span class=\"sql-keyword\">ORDER BY<\/span> lifetime_value <span class=\"sql-keyword\">DESC<\/span>\n<span class=\"sql-keyword\">LIMIT<\/span> <span class=\"sql-number\">10<\/span>;\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>Cohort Analysis<\/h3>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Monthly cohort of new customers<\/span>\n<span class=\"sql-keyword\">SELECT<\/span> \n    <span class=\"sql-function\">DATE_TRUNC<\/span>(<span class=\"sql-string\">'month'<\/span>, first_order_date) <span class=\"sql-keyword\">AS<\/span> cohort_month,\n    <span class=\"sql-function\">COUNT<\/span>(<span class=\"sql-keyword\">DISTINCT<\/span> customer_id) <span class=\"sql-keyword\">AS<\/span> cohort_size\n<span class=\"sql-keyword\">FROM<\/span> (\n    <span class=\"sql-keyword\">SELECT<\/span> \n        customer_id,\n        <span class=\"sql-function\">MIN<\/span>(order_date) <span class=\"sql-keyword\">AS<\/span> first_order_date\n    <span class=\"sql-keyword\">FROM<\/span> orders\n    <span class=\"sql-keyword\">GROUP BY<\/span> customer_id\n) first_orders\n<span class=\"sql-keyword\">GROUP BY<\/span> cohort_month\n<span class=\"sql-keyword\">ORDER BY<\/span> cohort_month;\n                <\/div>\n            <\/div>\n\n            <div class=\"subsection\">\n                <h3>Growth Metrics<\/h3>\n\n                <div class=\"sql-block\">\n<span class=\"sql-comment\">-- Month-over-month growth<\/span>\n<span class=\"sql-keyword\">WITH<\/span> monthly_revenue <span class=\"sql-keyword\">AS<\/span> (\n    <span class=\"sql-keyword\">SELECT<\/span> \n        <span class=\"sql-function\">DATE_TRUNC<\/span>(<span class=\"sql-string\">'month'<\/span>, order_date) <span class=\"sql-keyword\">AS<\/span> month,\n        <span class=\"sql-function\">SUM<\/span>(total_amount) <span class=\"sql-keyword\">AS<\/span> revenue\n    <span class=\"sql-keyword\">FROM<\/span> orders\n    <span class=\"sql-keyword\">GROUP BY<\/span> month\n)\n<span class=\"sql-keyword\">SELECT<\/span> \n    month,\n    revenue,\n    <span class=\"sql-function\">LAG<\/span>(revenue) <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">ORDER BY<\/span> month) <span class=\"sql-keyword\">AS<\/span> prev_month_revenue,\n    revenue - <span class=\"sql-function\">LAG<\/span>(revenue) <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">ORDER BY<\/span> month) <span class=\"sql-keyword\">AS<\/span> growth,\n    <span class=\"sql-function\">ROUND<\/span>(\n        (<span class=\"sql-number\">100.0<\/span> * (revenue - <span class=\"sql-function\">LAG<\/span>(revenue) <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">ORDER BY<\/span> month)) \/ \n        <span class=\"sql-function\">LAG<\/span>(revenue) <span class=\"sql-keyword\">OVER<\/span> (<span class=\"sql-keyword\">ORDER BY<\/span> month)), \n        <span class=\"sql-number\">2<\/span>\n    ) <span class=\"sql-keyword\">AS<\/span> growth_pct\n<span class=\"sql-keyword\">FROM<\/span> monthly_revenue;\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Performance Tips -->\n        <div class=\"section\">\n            <div class=\"section-header\">\u26a1 Performance Optimization Tips<\/div>\n\n            <div class=\"best-practice\">\n                <strong>\u2713 Index Your Columns:<\/strong> Create indexes on columns used in WHERE, JOIN, and ORDER BY clauses\n            <\/div>\n\n            <div class=\"best-practice\">\n                <strong>\u2713 Use WHERE Instead of HAVING:<\/strong> Filter rows before aggregation when possible\n            <\/div>\n\n            <div class=\"best-practice\">\n                <strong>\u2713 Limit Results:<\/strong> Use LIMIT to retrieve only needed rows\n            <\/div>\n\n            <div class=\"best-practice\">\n                <strong>\u2713 Avoid SELECT *:<\/strong> Specify only columns you need\n            <\/div>\n\n            <div class=\"best-practice\">\n                <strong>\u2713 Use EXISTS Instead of IN:<\/strong> For subqueries, EXISTS is often faster\n            <\/div>\n\n            <div class=\"warning-box\">\n                <strong>\u26a0\ufe0f Common Performance Killers:<\/strong>\n                <ul>\n                    <li>Functions on indexed columns in WHERE clause<\/li>\n                    <li>SELECT DISTINCT on large datasets<\/li>\n                    <li>Multiple OR conditions (use IN instead)<\/li>\n                    <li>LIKE queries starting with % (%abc%)<\/li>\n                    <li>Cartesian joins (missing JOIN conditions)<\/li>\n                <\/ul>\n            <\/div>\n        <\/div>\n\n        <!-- Quick Reference -->\n        <div class=\"section\">\n            <div class=\"section-header\">\ud83d\udcd6 Quick Reference Table<\/div>\n\n            <table class=\"comparison-table\">\n                <thead>\n                    <tr>\n                        <th>Operation<\/th>\n                        <th>Syntax<\/th>\n                        <th>Example<\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody>\n                    <tr>\n                        <td><strong>Select All<\/strong><\/td>\n                        <td><code>SELECT * FROM table<\/code><\/td>\n                        <td>Get all columns<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Filter<\/strong><\/td>\n                        <td><code>WHERE column = value<\/code><\/td>\n                        <td>Filter by condition<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Sort<\/strong><\/td>\n                        <td><code>ORDER BY column DESC<\/code><\/td>\n                        <td>Sort descending<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Group<\/strong><\/td>\n                        <td><code>GROUP BY column<\/code><\/td>\n                        <td>Aggregate by groups<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Count<\/strong><\/td>\n                        <td><code>COUNT(*)<\/code><\/td>\n                        <td>Count rows<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Sum<\/strong><\/td>\n                        <td><code>SUM(column)<\/code><\/td>\n                        <td>Total sum<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Average<\/strong><\/td>\n                        <td><code>AVG(column)<\/code><\/td>\n                        <td>Calculate average<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Join Tables<\/strong><\/td>\n                        <td><code>JOIN table ON condition<\/code><\/td>\n                        <td>Combine tables<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>NULL Check<\/strong><\/td>\n                        <td><code>IS NULL \/ IS NOT NULL<\/code><\/td>\n                        <td>Find missing values<\/td>\n                    <\/tr>\n                    <tr>\n                        <td><strong>Pattern Match<\/strong><\/td>\n                        <td><code>LIKE '%value%'<\/code><\/td>\n                        <td>Search text<\/td>\n                    <\/tr>\n                <\/tbody>\n            <\/table>\n        <\/div>\n\n        <footer>\n            <div class=\"footer-logo\">AiPro Institute\u2122<\/div>\n            <p>SQL Query Cheat Sheet | Members Only Resource<\/p>\n            <p style=\"margin-top: 10px; font-size: 0.9em;\">\n                \u00a9 2024 AiPro Institute. Master SQL for data-driven business decisions.\n                Practice on real data, start simple, build complexity gradually.\n            <\/p>\n        <\/footer>\n    <\/div>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>SQL Query Cheat Sheet | AiPro Institute\u2122 \ud83d\uddc4\ufe0f SQL Query Cheat Sheet Complete SQL Reference for Business Data Analysis AiPro Institute\u2122 Members Only \ud83d\udcda SQL Fundamentals What is SQL? SQL (Structured Query Language) is the standard language for managing and querying databases. It&#8217;s essential for working with data stored in systems like MySQL, PostgreSQL, SQL&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[87],"tags":[],"class_list":["post-3223","post","type-post","status-publish","format-standard","hentry","category-technical-skills"],"acf":[],"_links":{"self":[{"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/posts\/3223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/comments?post=3223"}],"version-history":[{"count":4,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/posts\/3223\/revisions"}],"predecessor-version":[{"id":3282,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/posts\/3223\/revisions\/3282"}],"wp:attachment":[{"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/media?parent=3223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/categories?post=3223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/teen.aiproinstitute.com\/zh\/wp-json\/wp\/v2\/tags?post=3223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}