Khóa học SQL #1 cho Data Analyst

From Query to Insights with SQL for Data Analytics

Khóa học này được thiết kế đặc biệt để trang bị cho bạn kiến thức vững chắc và kinh nghiệm thực hành cần thiết, giúp bạn tỏa sáng trong lĩnh vực phân tích dữ liệu bằng SQL.

1,214+ Học viên đã tham gia
4.9★ Đánh giá từ 210 review
104 Video bài giảng
Video giới thiệu khóa SQL for Data Analytics
Học trọn đời - Truy cập vĩnh viễn
Community 1000+ thành viên
Update miễn phí nội dung mới
/* =========================== COLOR TOKENS - SQL Blue Theme =========================== */ .sql-hero-section, .sql-trust-bar, .et-db.et-db.et-db #et-boc .et-l /* =========================== COLOR TOKENS - SQL Blue Theme =========================== */ .sql-hero-section, .et-db.et-db.et-db #et-boc .et-l .sql-trust-bar{ --sql-primary: #0EA5E9; --sql-primary-dark: #0284C7; --sql-primary-light: #38BDF8; --sql-bg-gradient: linear-gradient(180deg, #FFFFFF 0%, #F0F9FF 50%, #FFFFFF 100%); --sql-sale-gradient: linear-gradient(135deg, #FF4500 0%, #FF6347 100%); } /* =========================== CRITICAL CSS - Override Divi =========================== */ .sql-hero-section, .sql-hero-section *, .sql-trust-bar, .sql-trust-bar *, .et-db.et-db.et-db #et-boc .et-l /* =========================== CRITICAL CSS - Override Divi =========================== */ .sql-hero-section, .et-db.et-db.et-db #et-boc .et-l .sql-hero-section *, .et-db.et-db.et-db #et-boc .et-l .sql-trust-bar, .et-db.et-db.et-db #et-boc .et-l .sql-trust-bar *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } /* =========================== HERO SECTION =========================== */ .sql-hero-section, .et-db.et-db.et-db #et-boc .et-l /* =========================== HERO SECTION =========================== */ .sql-hero-section{ background: var(--sql-bg-gradient); padding: 50px 0 50px; position: relative; overflow: hidden; opacity: 0; animation: sqlFadeInHero 0.8s ease-out 0.2s forwards; } @keyframes sqlFadeInHero { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .sql-hero-bg-pattern, .et-db.et-db.et-db #et-boc .et-l .sql-hero-bg-pattern{ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.03%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; } .sql-hero-container, .et-db.et-db.et-db #et-boc .et-l .sql-hero-container{ width: 85%; margin: 0 auto; position: relative; z-index: 2; } .sql-hero-content, .et-db.et-db.et-db #et-boc .et-l .sql-hero-content{ display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; } /* =========================== LEFT CONTENT =========================== */ .sql-hero-left, .et-db.et-db.et-db #et-boc .et-l /* =========================== LEFT CONTENT =========================== */ .sql-hero-left{ opacity: 0; animation: sqlFadeInLeft 0.8s ease-out 0.4s forwards; } @keyframes sqlFadeInLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } } /* =========================== BADGE WITH STAR ICON =========================== */ .sql-hero-badge{ display: inline-flex; align-items: center; gap: 8px; background: rgba(14, 165, 233, 0.10); padding: 9px 18px; border-radius: 100px; font-size: 14px; font-weight: 700; color: var(--sql-primary-dark); margin-bottom: 24px; }.et-db.et-db.et-db #et-boc .et-l /* =========================== BADGE WITH STAR ICON =========================== */ .sql-hero-badge{ display: inline-flex; align-items: center; gap: 8px; background: rgba(14, 165, 233, 0.10); padding: 9px 18px; border-radius: 100px; font-size: 14px; font-weight: 700; color: var(--sql-primary-dark) !important; margin-bottom: 24px; } .badge-icon{ width: 16px; height: 16px; color: var(--sql-primary); }.et-db.et-db.et-db #et-boc .et-l .badge-icon{ width: 16px; height: 16px; color: var(--sql-primary) !important; } .sql-hero-title{ font-size: 56px !important; font-weight: 800; color: #0F172A; line-height: 1.2; letter-spacing: -0.02em; margin: 0 0 24px 0; }.et-db.et-db.et-db #et-boc .et-l .sql-hero-title{ font-size: 56px !important; font-weight: 800; color: #0F172A !important; line-height: 1.2; letter-spacing: -0.02em; margin: 0 0 24px 0; } .sql-hero-highlight, .et-db.et-db.et-db #et-boc .et-l .sql-hero-highlight{ background: linear-gradient(135deg, var(--sql-primary) 0%, var(--sql-primary-dark) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .sql-hero-subtitle{ font-size: 20px; color: #475569; line-height: 1.65; margin: 0 0 32px 0; }.et-db.et-db.et-db #et-boc .et-l .sql-hero-subtitle{ font-size: 20px; color: #475569 !important; line-height: 1.65; margin: 0 0 32px 0; } /* =========================== CTA BUTTONS =========================== */ .sql-hero-cta-buttons, .et-db.et-db.et-db #et-boc .et-l /* =========================== CTA BUTTONS =========================== */ .sql-hero-cta-buttons{ display: flex; gap: 16px; margin-bottom: 40px; align-items: stretch; } .cta-wrapper, .et-db.et-db.et-db #et-boc .et-l .cta-wrapper{ position: relative; display: inline-block; } .sql-btn-primary, .sql-btn-secondary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-primary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-secondary{ padding: 16px 32px; font-size: 18px; font-weight: 700; border-radius: 12px; text-decoration: none; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; min-height: 80px; } .sql-btn-primary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-primary{ background: linear-gradient(135deg, var(--sql-primary) 0%, var(--sql-primary-dark) 100%); color: white !important; box-shadow: 0 4px 16px rgba(14, 165, 233, 0.3); gap: 4px; line-height: 1.3; } .sql-btn-primary:hover, .et-db.et-db.et-db #et-boc .et-l .sql-btn-primary:hover{ transform: translateY(-3px); box-shadow: 0 8px 24px rgba(14, 165, 233, 0.4); } .cta-main-text, .et-db.et-db.et-db #et-boc .et-l .cta-main-text{ font-size: 18px; font-weight: 700; } /* UPDATED SALE BADGE */ .sale-badge, .et-db.et-db.et-db #et-boc .et-l /* UPDATED SALE BADGE */ .sale-badge{ display: inline-block; background: var(--sql-sale-gradient); color: white !important; font-size: 14px; font-weight: 800; padding: 8px 18px; border-radius: 24px; box-shadow: 0 4px 16px rgba(255, 69, 0, 0.4); animation: salePulse 2s ease-in-out infinite; border: 2px solid rgba(255, 255, 255, 0.3); letter-spacing: 0.5px; margin-bottom: 16px; } .price-line, .et-db.et-db.et-db #et-boc .et-l .price-line{ display: flex; align-items: center; gap: 10px; font-size: 16px; } .price-original, .et-db.et-db.et-db #et-boc .et-l .price-original{ text-decoration: line-through; opacity: 0.7; font-weight: 500; font-size: 15px; } .price-sale, .et-db.et-db.et-db #et-boc .et-l .price-sale{ font-size: 20px; font-weight: 800; } .sql-btn-secondary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-secondary{ background: white; color: var(--sql-primary-dark) !important; border: 2px solid var(--sql-primary); } .sql-btn-secondary:hover, .et-db.et-db.et-db #et-boc .et-l .sql-btn-secondary:hover{ background: rgba(14, 165, 233, 0.05); transform: translateY(-3px); } /* =========================== HERO STATS =========================== */ .sql-hero-stats, .et-db.et-db.et-db #et-boc .et-l /* =========================== HERO STATS =========================== */ .sql-hero-stats{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; padding-top: 24px; } .sql-stat-item, .et-db.et-db.et-db #et-boc .et-l .sql-stat-item{ display: flex; flex-direction: column; gap: 4px; } .sql-stat-number{ font-size: 32px; font-weight: 800; color: var(--sql-primary); display: block; line-height: 1; }.et-db.et-db.et-db #et-boc .et-l .sql-stat-number{ font-size: 32px; font-weight: 800; color: var(--sql-primary) !important; display: block; line-height: 1; } .sql-stat-label{ font-size: 14px; font-weight: 600; color: #64748B; line-height: 1.4; }.et-db.et-db.et-db #et-boc .et-l .sql-stat-label{ font-size: 14px; font-weight: 600; color: #64748B !important; line-height: 1.4; } /* =========================== RIGHT CONTENT - VIDEO =========================== */ .sql-hero-right, .et-db.et-db.et-db #et-boc .et-l /* =========================== RIGHT CONTENT - VIDEO =========================== */ .sql-hero-right{ opacity: 0; animation: sqlFadeInRight 0.8s ease-out 0.6s forwards; } @keyframes sqlFadeInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } /* =========================== MEDIA SECTION =========================== */ .data-video-wrapper, .et-db.et-db.et-db #et-boc .et-l /* =========================== MEDIA SECTION =========================== */ .data-video-wrapper{ position: relative; width: 100%; padding-bottom: 56.25%; background: #F1F5F9; border-radius: 16px; overflow: hidden; } .data-video-container, .et-db.et-db.et-db #et-boc .et-l .data-video-container{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #000; border-radius: 16px; overflow: hidden; cursor: pointer; } .data-video-thumbnail, .et-db.et-db.et-db #et-boc .et-l .data-video-thumbnail{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; transition: opacity 0.3s ease; } .data-video-thumbnail img, .et-db.et-db.et-db #et-boc .et-l .data-video-thumbnail img{ width: 100%; height: 100%; object-fit: cover; } .data-play-button, .et-db.et-db.et-db #et-boc .et-l .data-play-button{ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: none; border: none; cursor: pointer; transition: transform 0.3s ease; padding: 0; z-index: 10; } .data-play-button:hover, .et-db.et-db.et-db #et-boc .et-l .data-play-button:hover{ transform: translate(-50%, -50%) scale(1.1); } .data-play-button svg, .et-db.et-db.et-db #et-boc .et-l .data-play-button svg{ filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3)); } .data-video-container.playing iframe, .et-db.et-db.et-db #et-boc .et-l .data-video-container.playing iframe{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; } .data-video-container.playing .data-video-thumbnail, .et-db.et-db.et-db #et-boc .et-l .data-video-container.playing .data-video-thumbnail{ display: none; } /* =========================== TRUST BAR - SVG ICONS =========================== */ .sql-trust-bar, .et-db.et-db.et-db #et-boc .et-l /* =========================== TRUST BAR - SVG ICONS =========================== */ .sql-trust-bar{ background: white; padding: 32px 0; border-top: 2px solid #F1F5F9; border-bottom: 2px solid #F1F5F9; opacity: 0; animation: sqlFadeInHero 0.8s ease-out 0.8s forwards; } .sql-trust-container, .et-db.et-db.et-db #et-boc .et-l .sql-trust-container{ width: 85%; margin: 0 auto; } .sql-trust-items, .et-db.et-db.et-db #et-boc .et-l .sql-trust-items{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; } .sql-trust-item, .et-db.et-db.et-db #et-boc .et-l .sql-trust-item{ display: flex; align-items: center; gap: 12px; justify-content: center; } .sql-trust-icon, .et-db.et-db.et-db #et-boc .et-l .sql-trust-icon{ width: 28px; height: 28px; background: var(--sql-primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .sql-trust-icon svg{ width: 14px; height: 14px; color: white; fill: white; }.et-db.et-db.et-db #et-boc .et-l .sql-trust-icon svg{ width: 14px; height: 14px; color: white !important; fill: white; } .sql-trust-item span{ font-size: 15px; font-weight: 600; color: #1E293B; }.et-db.et-db.et-db #et-boc .et-l .sql-trust-item span{ font-size: 15px; font-weight: 600; color: #1E293B !important; } /* =========================== RESPONSIVE =========================== */ @media (max-width: 1200px), .et-db.et-db.et-db #et-boc .et-l /* =========================== RESPONSIVE =========================== */ @media (max-width: 1200px){ .sql-trust-items { grid-template-columns: repeat(3, 1fr); gap: 24px; } } @media (max-width: 1024px) { .sql-hero-container, .sql-trust-container, .et-db.et-db.et-db #et-boc .et-l .sql-hero-container, .et-db.et-db.et-db #et-boc .et-l .sql-trust-container{ width: 90%; } .sql-hero-title, .et-db.et-db.et-db #et-boc .et-l .sql-hero-title{ font-size: 40px !important; } .sql-hero-content, .et-db.et-db.et-db #et-boc .et-l .sql-hero-content{ gap: 40px; }} @media (max-width: 768px) { .sql-hero-container, .sql-trust-container, .et-db.et-db.et-db #et-boc .et-l .sql-hero-container, .et-db.et-db.et-db #et-boc .et-l .sql-trust-container{ width: 90%; } .sql-hero-content, .et-db.et-db.et-db #et-boc .et-l .sql-hero-content{ grid-template-columns: 1fr; gap: 40px; } .sql-hero-right, .et-db.et-db.et-db #et-boc .et-l .sql-hero-right{ display: none; } .sql-hero-cta-buttons, .et-db.et-db.et-db #et-boc .et-l .sql-hero-cta-buttons{ flex-direction: column; } .sql-btn-primary, .sql-btn-secondary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-primary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-secondary{ width: 100%; text-align: center; } .sql-hero-title, .et-db.et-db.et-db #et-boc .et-l .sql-hero-title{ font-size: 36px !important; } .sql-hero-subtitle, .et-db.et-db.et-db #et-boc .et-l .sql-hero-subtitle{ font-size: 16px; } .sql-trust-items, .et-db.et-db.et-db #et-boc .et-l .sql-trust-items{ grid-template-columns: 1fr; gap: 20px; } .sql-trust-item, .et-db.et-db.et-db #et-boc .et-l .sql-trust-item{ justify-content: flex-start; } .sql-hero-stats, .et-db.et-db.et-db #et-boc .et-l .sql-hero-stats{ grid-template-columns: 1fr; text-align: center; } .sql-stat-item, .et-db.et-db.et-db #et-boc .et-l .sql-stat-item{ text-align: center; }} @media (max-width: 480px) { .sql-hero-container, .sql-trust-container, .et-db.et-db.et-db #et-boc .et-l .sql-hero-container, .et-db.et-db.et-db #et-boc .et-l .sql-trust-container{ width: 90%; } .sql-hero-badge, .et-db.et-db.et-db #et-boc .et-l .sql-hero-badge{ font-size: 12px; padding: 8px 16px; } .badge-icon, .et-db.et-db.et-db #et-boc .et-l .badge-icon{ width: 14px; height: 14px; } .sql-hero-title, .et-db.et-db.et-db #et-boc .et-l .sql-hero-title{ font-size: 32px !important; } .sql-hero-subtitle, .et-db.et-db.et-db #et-boc .et-l .sql-hero-subtitle{ font-size: 16px; } .sql-btn-primary, .sql-btn-secondary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-primary, .et-db.et-db.et-db #et-boc .et-l .sql-btn-secondary{ padding: 14px 24px; font-size: 16px; } .price-sale, .et-db.et-db.et-db #et-boc .et-l .price-sale{ font-size: 18px; } .sql-trust-icon, .et-db.et-db.et-db #et-boc .et-l .sql-trust-icon{ width: 24px; height: 24px; } .sql-trust-icon svg, .et-db.et-db.et-db #et-boc .et-l .sql-trust-icon svg{ width: 12px; height: 12px; } .sql-trust-item span, .et-db.et-db.et-db #et-boc .et-l .sql-trust-item span{ font-size: 14px; }} (function () { // =========================== // HERO VIDEO: autoplay muted when scrolled into view; click = play with sound // =========================== var containers = [].slice.call(document.querySelectorAll('.data-video-container')); function buildSrc(id, muted) { return 'https://www.youtube.com/embed/' + id + '?autoplay=1&rel=0&modestbranding=1&playsinline=1&controls=1&mute=' + (muted ? '1' : '0'); } function play(container, muted) { var id = container.getAttribute('data-video-id'); if (!id) return; var iframe = container.querySelector('iframe'); if (iframe) { iframe.src = buildSrc(id, muted); } else { iframe = document.createElement('iframe'); iframe.src = buildSrc(id, muted); iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'; iframe.allowFullscreen = true; iframe.frameBorder = '0'; iframe.referrerPolicy = 'strict-origin-when-cross-origin'; container.appendChild(iframe); } container.classList.add('playing'); } // Click the poster -> play WITH sound (user gesture allows unmuted) containers.forEach(function (c) { c.addEventListener('click', function () { play(c, false); }); }); // Autoplay (muted) when the hero video scrolls into view var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (!reduce && 'IntersectionObserver' in window) { var io = new IntersectionObserver(function (entries) { entries.forEach(function (en) { if (en.isIntersecting) { if (!en.target.classList.contains('playing')) play(en.target, true); io.unobserve(en.target); } }); }, { threshold: 0.4 }); containers.forEach(function (c) { io.observe(c); }); } // =========================== // SMOOTH SCROLL FOR CTA // =========================== var ctaButtons = document.querySelectorAll('.sql-btn-primary, .sql-btn-secondary'); ctaButtons.forEach(function (button) { button.addEventListener('click', function (e) { var href = this.getAttribute('href'); if (href && href.charAt(0) === '#') { e.preventDefault(); var target = document.querySelector(href); if (target) { window.scrollTo({ top: target.offsetTop - 80, behavior: 'smooth' }); } } }); }); })();
HÀNH TRÌNH CỦA BẠN

Bạn đang ở đâu trên hành trình Data Analytics?

SQL là kỹ năng nền tảng quan trọng nhất của Data Analyst - giúp bạn chủ động truy vấn và xử lý dữ liệu

Lộ trình 6 cấp độ để trở thành Data Analyst

1
KHÓA 1
Data Analytics 101
2
KHÓA 2
AI-Powered Excel & Google Sheet for Data Analytics
3
KHÓA 3
Analytical Thinking & Data Analysis With Power BI
4
KHÓA 4
AI Agent For Data Analytics & Decision Making
5 Bạn đang ở đây
KHÓA 5
SQL For Data Analytics
6
KHÓA 6
Python For Data Analytics
Bạn đang gặp những câu hỏi này?
  • Không biết SQL quan trọng như thế nào cho Data Analyst?
  • Học SQL nhưng không biết áp dụng vào bài toán thực tế
  • Viết được query cơ bản nhưng bí khi gặp bài toán phức tạp
  • Không có lộ trình học SQL từ cơ bản đến nâng cao
  • Khóa học giúp bạn:
  • Nắm vững SQL từ cơ bản đến nâng cao với 104 video
  • Áp dụng SQL vào giải quyết bài toán phân tích thực tế
  • Thực hành với 7 modules từ query đơn giản đến phức tạp
  • Tự tin xử lý data và trở thành SQL expert
  • /* =========================== CRITICAL CSS - Override Divi =========================== */ .problem-solution, .problem-solution *, .et-db.et-db.et-db #et-boc .et-l /* =========================== CRITICAL CSS - Override Divi =========================== */ .problem-solution, .et-db.et-db.et-db #et-boc .et-l .problem-solution *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .problem-solution, .et-db.et-db.et-db #et-boc .et-l .problem-solution{ /* SQL COURSE - BLUE COLOR SCHEME */ --primary: #0EA5E9; --primary-dark: #0284C7; --primary-light: #38BDF8; --dark: #0F172A; --dark-800: #1E293B; --gray: #64748B; --line-rest: #DCE3EB; --white: #FFFFFF; --accent: #64748B; --gradient-1: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%); } /* =========================== BASE SECTION =========================== */ .problem-solution, .et-db.et-db.et-db #et-boc .et-l /* =========================== BASE SECTION =========================== */ .problem-solution{ background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); padding: 68px 0; position: relative; overflow: hidden; } .problem-solution::before, .et-db.et-db.et-db #et-boc .et-l .problem-solution::before{ content: ''; position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; z-index: 1; } .problem-solution-container, .et-db.et-db.et-db #et-boc .et-l .problem-solution-container{ width: 85%; margin: 0 auto; position: relative; z-index: 2; } /* =========================== SECTION HEADER =========================== */ .section-header, .et-db.et-db.et-db #et-boc .et-l /* =========================== SECTION HEADER =========================== */ .section-header{ text-align: center; max-width: 760px; margin: 0 auto 28px; } .section-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--primary-dark); margin-bottom: 18px; }.et-db.et-db.et-db #et-boc .et-l .section-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--primary-dark) !important; margin-bottom: 18px; } .section-header h2{ font-size: 46px !important; font-weight: 800; margin: 0 0 14px; color: var(--dark); line-height: 1.15; letter-spacing: -0.02em; }.et-db.et-db.et-db #et-boc .et-l .section-header h2{ font-size: 46px !important; font-weight: 800; margin: 0 0 14px; color: var(--dark) !important; line-height: 1.15; letter-spacing: -0.02em; } .subtitle{ font-size: 18px; color: var(--gray); line-height: 1.65; margin: 0; }.et-db.et-db.et-db #et-boc .et-l .subtitle{ font-size: 18px; color: var(--gray) !important; line-height: 1.65; margin: 0; } /* =========================== ROADMAP WRAPPER =========================== */ .roadmap-wrapper, .et-db.et-db.et-db #et-boc .et-l /* =========================== ROADMAP WRAPPER =========================== */ .roadmap-wrapper{ background: linear-gradient(135deg, #F0F9FF 0%, #E0F2FE 100%); border: 1px solid rgba(14, 165, 233, 0.10); border-radius: 28px; padding: 40px 52px 34px; margin: 0 auto 24px; position: relative; box-shadow: 0 12px 40px rgba(14, 165, 233, 0.08); overflow: hidden; } .roadmap-title{ text-align: center; font-size: 25px !important; font-weight: 800; color: var(--dark); margin: 0 0 36px; line-height: 1.3; letter-spacing: -0.01em; }.et-db.et-db.et-db #et-boc .et-l .roadmap-title{ text-align: center; font-size: 25px !important; font-weight: 800; color: var(--dark) !important; margin: 0 0 36px; line-height: 1.3; letter-spacing: -0.01em; } /* =========================== STEPS =========================== */ .steps-container, .et-db.et-db.et-db #et-boc .et-l /* =========================== STEPS =========================== */ .steps-container{ display: flex; justify-content: space-between; align-items: flex-start; position: relative; width: 85%; margin: 0 auto; padding: 14px 14px 0; } /* Connecting Line - SQL is step 5 → ~80% progress */ .steps-container::before, .et-db.et-db.et-db #et-boc .et-l /* Connecting Line - SQL is step 5 → ~80% progress */ .steps-container::before{ content: ''; position: absolute; top: calc(14px + 38px); left: 9%; right: 9%; height: 3px; background: linear-gradient(90deg, var(--primary) 0%, var(--primary) 80%, var(--line-rest) 80%, var(--line-rest) 100%); border-radius: 3px; z-index: 0; } .step, .et-db.et-db.et-db #et-boc .et-l .step{ flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; z-index: 1; } /* Step Number Node */ .step-number, .et-db.et-db.et-db #et-boc .et-l /* Step Number Node */ .step-number{ width: 76px; height: 76px; background: var(--white); border: 2px solid #E2E8F0; border-radius: 18px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 30px; color: var(--primary) !important; margin-bottom: 18px; position: relative; transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05); text-decoration: none; } .step.future .step-number, .et-db.et-db.et-db #et-boc .et-l .step.future .step-number{ cursor: pointer; } .step.future:hover .step-number, .et-db.et-db.et-db #et-boc .et-l .step.future:hover .step-number{ border-color: var(--primary); color: var(--primary) !important; transform: translateY(-5px); box-shadow: 0 12px 24px rgba(14, 165, 233, 0.16); } .step.future:hover .step-title{ color: var(--primary); }.et-db.et-db.et-db #et-boc .et-l .step.future:hover .step-title{ color: var(--primary) !important; } .step.future:hover .step-label{ color: var(--primary); }.et-db.et-db.et-db #et-boc .et-l .step.future:hover .step-label{ color: var(--primary) !important; } a.step-number, a.step-number:hover, a.step-number:focus, a.step-number:active, a.step-number:visited, .et-db.et-db.et-db #et-boc .et-l a.step-number, .et-db.et-db.et-db #et-boc .et-l a.step-number:hover, .et-db.et-db.et-db #et-boc .et-l a.step-number:focus, .et-db.et-db.et-db #et-boc .et-l a.step-number:active, .et-db.et-db.et-db #et-boc .et-l a.step-number:visited{ text-decoration: none !important; color: var(--primary) !important; } /* Active Step - SQL (Step 5) */ .step.active .step-number, .et-db.et-db.et-db #et-boc .et-l /* Active Step - SQL (Step 5) */ .step.active .step-number{ background: var(--gradient-1); border-color: var(--primary); color: var(--white) !important; box-shadow: 0 12px 26px rgba(14, 165, 233, 0.30), 0 0 0 5px rgba(14, 165, 233, 0.10); } /* "Bạn đang ở đây" marker - above the active node */ .you-are-here{ position: absolute; bottom: calc(100% + 12px); left: 50%; transform: translateX(-50%); background: var(--primary); color: var(--white); padding: 6px 14px; border-radius: 100px; font-size: 11px; font-weight: 700; letter-spacing: 0.4px; white-space: nowrap; box-shadow: 0 6px 16px rgba(14, 165, 233, 0.28); }.et-db.et-db.et-db #et-boc .et-l /* "Bạn đang ở đây" marker - above the active node */ .you-are-here{ position: absolute; bottom: calc(100% + 12px); left: 50%; transform: translateX(-50%); background: var(--primary); color: var(--white) !important; padding: 6px 14px; border-radius: 100px; font-size: 11px; font-weight: 700; letter-spacing: 0.4px; white-space: nowrap; box-shadow: 0 6px 16px rgba(14, 165, 233, 0.28); } .you-are-here::after, .et-db.et-db.et-db #et-boc .et-l .you-are-here::after{ content: ''; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid var(--primary); } /* Step Content */ .step-content, .et-db.et-db.et-db #et-boc .et-l /* Step Content */ .step-content{ text-align: center; max-width: 180px; } .step-label{ font-size: 12px; font-weight: 700; color: var(--gray); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 1px; line-height: 1.2; transition: color 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l .step-label{ font-size: 12px; font-weight: 700; color: var(--gray) !important; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 1px; line-height: 1.2; transition: color 0.3s ease; } .step.active .step-label{ color: var(--primary); font-weight: 800; }.et-db.et-db.et-db #et-boc .et-l .step.active .step-label{ color: var(--primary) !important; font-weight: 800; } .step-title{ font-size: 15px; font-weight: 600; color: var(--gray); line-height: 1.4; transition: color 0.3s ease; min-height: 42px; }.et-db.et-db.et-db #et-boc .et-l .step-title{ font-size: 15px; font-weight: 600; color: var(--gray) !important; line-height: 1.4; transition: color 0.3s ease; min-height: 42px; } .step.active .step-title{ color: var(--dark); font-weight: 700; }.et-db.et-db.et-db #et-boc .et-l .step.active .step-title{ color: var(--dark) !important; font-weight: 700; } /* =========================== SCROLL REVEAL =========================== */ .ps-reveal, .et-db.et-db.et-db #et-boc .et-l /* =========================== SCROLL REVEAL =========================== */ .ps-reveal{ opacity: 0; transform: translateY(24px); transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1), transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); } .ps-reveal.ps-in, .et-db.et-db.et-db #et-boc .et-l .ps-reveal.ps-in{ opacity: 1; transform: none; } /* =========================== PROBLEM-SOLUTION GRID =========================== */ .problem-solution-grid, .et-db.et-db.et-db #et-boc .et-l /* =========================== PROBLEM-SOLUTION GRID =========================== */ .problem-solution-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 24px; } .problem-box, .solution-box, .et-db.et-db.et-db #et-boc .et-l .problem-box, .et-db.et-db.et-db #et-boc .et-l .solution-box{ padding: 32px; border-radius: 20px; transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease; } .problem-box, .et-db.et-db.et-db #et-boc .et-l .problem-box{ border: 1px solid #E2E8F0; background: linear-gradient(135deg, #F8FAFC 0%, #FFFFFF 100%); } .solution-box, .et-db.et-db.et-db #et-boc .et-l .solution-box{ border: 1px solid #BAE3FB; background: linear-gradient(135deg, #EFF8FF 0%, #FFFFFF 100%); } .problem-box:hover, .solution-box:hover, .et-db.et-db.et-db #et-boc .et-l .problem-box:hover, .et-db.et-db.et-db #et-boc .et-l .solution-box:hover{ transform: translateY(-6px); box-shadow: 0 18px 44px rgba(15, 23, 42, 0.10); } /* Box Icon Chip */ .box-icon, .et-db.et-db.et-db #et-boc .et-l /* Box Icon Chip */ .box-icon{ width: 46px; height: 46px; border-radius: 13px; display: flex; align-items: center; justify-content: center; margin-bottom: 18px; } .box-icon svg, .et-db.et-db.et-db #et-boc .et-l .box-icon svg{ width: 24px; height: 24px; } .problem-box .box-icon{ background: rgba(100, 116, 139, 0.12); color: var(--accent); }.et-db.et-db.et-db #et-boc .et-l .problem-box .box-icon{ background: rgba(100, 116, 139, 0.12); color: var(--accent) !important; } .solution-box .box-icon{ background: rgba(14, 165, 233, 0.12); color: var(--primary); }.et-db.et-db.et-db #et-boc .et-l .solution-box .box-icon{ background: rgba(14, 165, 233, 0.12); color: var(--primary) !important; } /* Box Title */ .box-title{ font-size: 21px; font-weight: 700; margin: 0 0 20px; line-height: 1.3; color: var(--dark); }.et-db.et-db.et-db #et-boc .et-l /* Box Title */ .box-title{ font-size: 21px; font-weight: 700; margin: 0 0 20px; line-height: 1.3; color: var(--dark) !important; } /* Box List */ .box-list, .et-db.et-db.et-db #et-boc .et-l /* Box List */ .box-list{ list-style: none; margin: 0; padding: 0; } .box-list li{ list-style: none !important; padding: 9px 0 9px 32px; position: relative; color: var(--dark-800); font-size: 15px; line-height: 1.55; }.et-db.et-db.et-db #et-boc .et-l .box-list li{ list-style: none !important; padding: 9px 0 9px 32px; position: relative; color: var(--dark-800) !important; font-size: 15px; line-height: 1.55; } .box-list li::marker, .et-db.et-db.et-db #et-boc .et-l .box-list li::marker{ content: '' !important; } .box-list li::before, .et-db.et-db.et-db #et-boc .et-l .box-list li::before{ position: absolute; left: 0; top: 10px; width: 20px; height: 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; line-height: 1; } .problem-box .box-list li::before{ content: '\2715'; background: rgba(100, 116, 139, 0.12); color: var(--accent); }.et-db.et-db.et-db #et-boc .et-l .problem-box .box-list li::before{ content: '\2715'; background: rgba(100, 116, 139, 0.12); color: var(--accent) !important; } .solution-box .box-list li::before{ content: '\2713'; background: rgba(14, 165, 233, 0.12); color: var(--primary); }.et-db.et-db.et-db #et-boc .et-l .solution-box .box-list li::before{ content: '\2713'; background: rgba(14, 165, 233, 0.12); color: var(--primary) !important; } /* =========================== RESPONSIVE - TABLET =========================== */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* =========================== RESPONSIVE - TABLET =========================== */ @media (max-width: 1024px){ .problem-solution { padding: 56px 0; } .problem-solution-container { width: 90%; } .section-header { margin-bottom: 24px; } .roadmap-wrapper { padding: 34px 32px 28px; } .roadmap-title { font-size: 23px !important; margin-bottom: 30px; } .steps-container { padding: 12px 8px 0; } .steps-container::before { top: calc(12px + 33px); left: 7%; right: 7%; } .step-number { width: 66px; height: 66px; font-size: 26px; margin-bottom: 16px; } .step-content { max-width: 150px; } .step-title { font-size: 14px; min-height: 40px; } } /* =========================== RESPONSIVE - MOBILE =========================== */ @media (max-width: 768px), .et-db.et-db.et-db #et-boc .et-l /* =========================== RESPONSIVE - MOBILE =========================== */ @media (max-width: 768px){ .problem-solution { padding: 44px 0; } .section-header { margin-bottom: 22px; } .section-header h2 { font-size: 34px !important; } .subtitle { font-size: 16px; } .roadmap-wrapper { padding: 30px 20px 24px; border-radius: 24px; } .roadmap-title { font-size: 21px !important; margin-bottom: 28px; } .steps-container { padding: 12px 4px 0; } .steps-container::before { top: calc(12px + 30px); left: 6%; right: 6%; } .step-number { width: 60px; height: 60px; font-size: 24px; border-radius: 16px; margin-bottom: 14px; } .step-content { max-width: 130px; } .step-label { font-size: 10px; } .step-title { font-size: 13px; min-height: 38px; } .problem-solution-grid { grid-template-columns: 1fr; gap: 18px; } .problem-box, .solution-box { padding: 28px 22px; } .box-title { font-size: 20px; } } /* =========================== RESPONSIVE - SMALL MOBILE =========================== */ @media (max-width: 590px){ .section-header h2 { font-size: 28px !important; } .roadmap-wrapper { padding: 32px 16px 24px; overflow-x: auto; overflow-y: visible; } .roadmap-title { font-size: 21px !important; margin-bottom: 36px; padding: 0 6px; } .steps-container { min-width: 600px; padding: 14px 4px 0; } .steps-container::before { top: calc(14px + 29px); left: 6%; right: 6%; } .step-number { width: 58px; height: 58px; font-size: 23px; } .step-content { max-width: 110px; } .step-label { font-size: 9px; margin-bottom: 4px; } .step-title { font-size: 12px; line-height: 1.3; min-height: 34px; } .you-are-here { font-size: 10px; padding: 5px 11px; } .problem-box, .solution-box { padding: 24px 18px; } .box-list li { font-size: 14px; } /* Scroll hint */ .roadmap-wrapper::after { content: '← Vuốt ngang để xem →'; display: block; text-align: center; color: var(--gray); font-size: 11px; margin-top: 16px; opacity: 0.7; } }.et-db.et-db.et-db #et-boc .et-l /* =========================== RESPONSIVE - SMALL MOBILE =========================== */ @media (max-width: 590px){ .section-header h2 { font-size: 28px !important; } .roadmap-wrapper { padding: 32px 16px 24px; overflow-x: auto; overflow-y: visible; } .roadmap-title { font-size: 21px !important; margin-bottom: 36px; padding: 0 6px; } .steps-container { min-width: 600px; padding: 14px 4px 0; } .steps-container::before { top: calc(14px + 29px); left: 6%; right: 6%; } .step-number { width: 58px; height: 58px; font-size: 23px; } .step-content { max-width: 110px; } .step-label { font-size: 9px; margin-bottom: 4px; } .step-title { font-size: 12px; line-height: 1.3; min-height: 34px; } .you-are-here { font-size: 10px; padding: 5px 11px; } .problem-box, .solution-box { padding: 24px 18px; } .box-list li { font-size: 14px; } /* Scroll hint */ .roadmap-wrapper::after { content: '← Vuốt ngang để xem →'; display: block; text-align: center; color: var(--gray) !important; font-size: 11px; margin-top: 16px; opacity: 0.7; } } (function () { var revealEls = document.querySelectorAll('.problem-solution .step, .problem-solution .problem-box, .problem-solution .solution-box'); if (!revealEls.length) return; var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduceMotion || !('IntersectionObserver' in window)) { return; // leave content fully visible } var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { entry.target.classList.add('ps-in'); observer.unobserve(entry.target); } }); }, { threshold: 0.15, rootMargin: '0px 0px -80px 0px' }); var steps = document.querySelectorAll('.problem-solution .step'); steps.forEach(function (el, i) { el.classList.add('ps-reveal'); el.style.transitionDelay = (i * 0.07) + 's'; observer.observe(el); }); var boxes = document.querySelectorAll('.problem-solution .problem-box, .problem-solution .solution-box'); boxes.forEach(function (el, i) { el.classList.add('ps-reveal'); el.style.transitionDelay = (i * 0.1) + 's'; observer.observe(el); }); })();
    NỘI DUNG KHÓA HỌC

    7 modules từ Query cơ bản đến SQL Expert

    12 giờ học với 104 video bài giảng được thiết kế để bạn có thể học SQL mọi lúc, mọi nơi

    01

    Module mở đầu giúp bạn hiểu rõ về SQL Database, dòng chảy dữ liệu 5 tầng và các query cơ bản nhất để bắt đầu truy vấn dữ liệu.

    • Dòng chảy dữ liệu 5 tầng
    • 5 khái niệm quan trọng về SQL
    • SELECT FROM - Truy vấn cơ bản
    • ORDER BY - Sắp xếp dữ liệu
    • WHERE - Lọc dữ liệu
    Video SQL Database
    .syl-section, .syl-section *, .et-db.et-db.et-db #et-boc .et-l .syl-section, .et-db.et-db.et-db #et-boc .et-l .syl-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .syl-section, .et-db.et-db.et-db #et-boc .et-l .syl-section{ --g: #0EA5E9; --g-dark: #0284C7; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --line-soft: #EEF2F6; --paper: #FFFFFF; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); padding: 72px 0; position: relative; overflow: hidden; } .syl-bg, .et-db.et-db.et-db #et-boc .et-l .syl-bg{ position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; } .syl-container, .et-db.et-db.et-db #et-boc .et-l .syl-container{ width: 85%; margin: 0 auto; position: relative; z-index: 2; } /* Header */ .syl-header, .et-db.et-db.et-db #et-boc .et-l /* Header */ .syl-header{ text-align: center; max-width: 760px; margin: 0 auto 40px; } .syl-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark); margin-bottom: 16px; }.et-db.et-db.et-db #et-boc .et-l .syl-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark) !important; margin-bottom: 16px; } .syl-title{ font-size: clamp(28px, 4vw, 44px); font-weight: 800; color: var(--ink); line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 14px; }.et-db.et-db.et-db #et-boc .et-l .syl-title{ font-size: clamp(28px, 4vw, 44px); font-weight: 800; color: var(--ink) !important; line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 14px; } .syl-subtitle{ font-size: 17px; color: var(--muted); line-height: 1.6; margin: 0 0 28px; }.et-db.et-db.et-db #et-boc .et-l .syl-subtitle{ font-size: 17px; color: var(--muted) !important; line-height: 1.6; margin: 0 0 28px; } /* Timeline */ .syl-timeline, .et-db.et-db.et-db #et-boc .et-l /* Timeline */ .syl-timeline{ display: flex; flex-direction: column; gap: 44px; } .syl-group, .et-db.et-db.et-db #et-boc .et-l .syl-group{ display: flex; flex-direction: column; gap: 14px; scroll-margin-top: 90px; } .syl-module, .et-db.et-db.et-db #et-boc .et-l .syl-module{ display: flex; align-items: flex-start; gap: 18px; position: relative; } .syl-module[hidden], .et-db.et-db.et-db #et-boc .et-l .syl-module[hidden]{ display: none !important; } /* connecting line: from below this node down to the next node */ .syl-group .syl-module:not(:last-child)::after, .et-db.et-db.et-db #et-boc .et-l /* connecting line: from below this node down to the next node */ .syl-group .syl-module:not(:last-child)::after{ content: ''; position: absolute; left: 25px; top: 52px; height: calc(100% - 38px); width: 2px; background: var(--line); border-radius: 2px; z-index: 0; } .syl-rail, .et-db.et-db.et-db #et-boc .et-l .syl-rail{ flex: 0 0 52px; display: flex; justify-content: center; } .syl-node{ width: 52px; height: 52px; flex-shrink: 0; border-radius: 50%; background: var(--paper); border: 2px solid rgba(14, 165, 233, 0.30); color: var(--g); font-weight: 800; font-size: 17px; display: grid; place-items: center; position: relative; z-index: 1; transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l .syl-node{ width: 52px; height: 52px; flex-shrink: 0; border-radius: 50%; background: var(--paper); border: 2px solid rgba(14, 165, 233, 0.30); color: var(--g) !important; font-weight: 800; font-size: 17px; display: grid; place-items: center; position: relative; z-index: 1; transition: background 0.3s ease, border-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease; } .syl-module:hover .syl-node{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%); border-color: transparent; color: #fff; box-shadow: 0 8px 18px rgba(14, 165, 233, 0.24); }.et-db.et-db.et-db #et-boc .et-l .syl-module:hover .syl-node{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%); border-color: transparent; color: #fff !important; box-shadow: 0 8px 18px rgba(14, 165, 233, 0.24); } .syl-card, .et-db.et-db.et-db #et-boc .et-l .syl-card{ flex: 1; min-width: 0; background: var(--paper); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05); transition: border-color 0.3s ease, box-shadow 0.3s ease; } .syl-module:hover .syl-card, .et-db.et-db.et-db #et-boc .et-l .syl-module:hover .syl-card{ border-color: rgba(14, 165, 233, 0.35); box-shadow: 0 16px 42px rgba(15, 23, 42, 0.10); } .syl-head, .et-db.et-db.et-db #et-boc .et-l .syl-head{ width: 100%; display: flex; align-items: center; gap: 16px; padding: 17px 22px; background: none; border: none; cursor: pointer; text-align: left; } .syl-htext, .et-db.et-db.et-db #et-boc .et-l .syl-htext{ flex: 1; min-width: 0; } .syl-mnum{ display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--g); margin-bottom: 3px; }.et-db.et-db.et-db #et-boc .et-l .syl-mnum{ display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--g) !important; margin-bottom: 3px; } .syl-mtitle{ display: block; font-size: 18px; font-weight: 700; color: var(--ink); line-height: 1.3; }.et-db.et-db.et-db #et-boc .et-l .syl-mtitle{ display: block; font-size: 18px; font-weight: 700; color: var(--ink) !important; line-height: 1.3; } .syl-msub{ display: block; font-size: 14px; color: var(--muted); line-height: 1.4; margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }.et-db.et-db.et-db #et-boc .et-l .syl-msub{ display: block; font-size: 14px; color: var(--muted) !important; line-height: 1.4; margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .syl-chev{ flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g); display: grid; place-items: center; transform: rotate(180deg); transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), background 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l .syl-chev{ flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; display: grid; place-items: center; transform: rotate(180deg); transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), background 0.3s ease; } .syl-module.collapsed .syl-chev, .et-db.et-db.et-db #et-boc .et-l .syl-module.collapsed .syl-chev{ transform: rotate(0deg); background: var(--line-soft); } /* Body (grid-rows accordion) — open by default, collapse to close */ .syl-body, .et-db.et-db.et-db #et-boc .et-l /* Body (grid-rows accordion) — open by default, .et-db.et-db.et-db #et-boc .et-l collapse to close */ .syl-body{ display: grid; grid-template-rows: 1fr; transition: grid-template-rows 0.42s cubic-bezier(0.16, 1, 0.3, 1); } .syl-module.collapsed .syl-body, .et-db.et-db.et-db #et-boc .et-l .syl-module.collapsed .syl-body{ grid-template-rows: 0fr; } .syl-bwrap, .et-db.et-db.et-db #et-boc .et-l .syl-bwrap{ overflow: hidden; } .syl-body-inner, .et-db.et-db.et-db #et-boc .et-l .syl-body-inner{ display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 28px; padding: 4px 22px 24px; align-items: start; } .syl-module.no-video .syl-body-inner, .et-db.et-db.et-db #et-boc .et-l .syl-module.no-video .syl-body-inner{ grid-template-columns: 1fr; } .syl-desc{ font-size: 15px; color: var(--ink2); line-height: 1.65; margin: 0 0 14px; }.et-db.et-db.et-db #et-boc .et-l .syl-desc{ font-size: 15px; color: var(--ink2) !important; line-height: 1.65; margin: 0 0 14px; } .syl-list, .et-db.et-db.et-db #et-boc .et-l .syl-list{ list-style: none; margin: 0; padding: 0; } .syl-list li{ list-style: none !important; position: relative; padding: 8px 0 8px 30px; font-size: 15px; color: var(--ink2); line-height: 1.5; border-bottom: 1px solid var(--line-soft); }.et-db.et-db.et-db #et-boc .et-l .syl-list li{ list-style: none !important; position: relative; padding: 8px 0 8px 30px; font-size: 15px; color: var(--ink2) !important; line-height: 1.5; border-bottom: 1px solid var(--line-soft); } .syl-list li:last-child, .et-db.et-db.et-db #et-boc .et-l .syl-list li:last-child{ border-bottom: none; } .syl-list li::marker, .et-db.et-db.et-db #et-boc .et-l .syl-list li::marker{ content: '' !important; } .syl-list li::before{ content: '\2713'; position: absolute; left: 0; top: 9px; width: 20px; height: 20px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g); font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; line-height: 1; }.et-db.et-db.et-db #et-boc .et-l .syl-list li::before{ content: '\2713'; position: absolute; left: 0; top: 9px; width: 20px; height: 20px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; line-height: 1; } /* Video */ .syl-media, .et-db.et-db.et-db #et-boc .et-l /* Video */ .syl-media{ position: sticky; top: 20px; } .syl-video, .et-db.et-db.et-db #et-boc .et-l .syl-video{ position: relative; aspect-ratio: 16 / 9; width: 100%; border-radius: 14px; overflow: hidden; background: #061726; border: 1px solid var(--line); cursor: pointer; } .syl-video img, .et-db.et-db.et-db #et-boc .et-l .syl-video img{ width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s ease; } .syl-video:hover img, .et-db.et-db.et-db #et-boc .et-l .syl-video:hover img{ transform: scale(1.04); } .syl-play, .et-db.et-db.et-db #et-boc .et-l .syl-play{ position: absolute; inset: 0; margin: auto; width: 60px; height: 42px; background: none; border: none; cursor: pointer; padding: 0; display: grid; place-items: center; transition: transform 0.25s ease; z-index: 2; } .syl-video:hover .syl-play, .et-db.et-db.et-db #et-boc .et-l .syl-video:hover .syl-play{ transform: scale(1.08); } .syl-play svg, .et-db.et-db.et-db #et-boc .et-l .syl-play svg{ filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.35)); } .syl-video.playing iframe, .et-db.et-db.et-db #et-boc .et-l .syl-video.playing iframe{ position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } .syl-video.playing img, .syl-video.playing .syl-play, .et-db.et-db.et-db #et-boc .et-l .syl-video.playing img, .et-db.et-db.et-db #et-boc .et-l .syl-video.playing .syl-play{ display: none; } /* Scroll reveal — each card fades up as it enters the viewport (midyear feel). Gated behind .syl-js so content stays visible if JS is off / reduced-motion. */ .syl-js .syl-module, .et-db.et-db.et-db #et-boc .et-l /* Scroll reveal — each card fades up as it enters the viewport (midyear feel). Gated behind .syl-js so content stays visible if JS is off / reduced-motion. */ .syl-js .syl-module{ opacity: 0; transform: translateY(22px); transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); } .syl-js .syl-module.syl-in, .et-db.et-db.et-db #et-boc .et-l .syl-js .syl-module.syl-in{ opacity: 1; transform: none; } /* ===== Responsive ===== */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* ===== Responsive ===== */ @media (max-width: 1024px){ .syl-section { padding: 56px 0; } .syl-container { width: 92%; } } @media (max-width: 768px) { .syl-section, .et-db.et-db.et-db #et-boc .et-l .syl-section{ padding: 44px 0; } .syl-header, .et-db.et-db.et-db #et-boc .et-l .syl-header{ margin-bottom: 30px; } .syl-subtitle, .et-db.et-db.et-db #et-boc .et-l .syl-subtitle{ font-size: 15px; } .syl-module, .et-db.et-db.et-db #et-boc .et-l .syl-module{ gap: 12px; } .syl-group .syl-module:not(:last-child)::after, .et-db.et-db.et-db #et-boc .et-l .syl-group .syl-module:not(:last-child)::after{ left: 21px; top: 44px; height: calc(100% - 30px); } .syl-rail, .et-db.et-db.et-db #et-boc .et-l .syl-rail{ flex-basis: 44px; } .syl-node, .et-db.et-db.et-db #et-boc .et-l .syl-node{ width: 44px; height: 44px; font-size: 15px; } .syl-head, .et-db.et-db.et-db #et-boc .et-l .syl-head{ padding: 15px 16px; gap: 12px; } .syl-mtitle, .et-db.et-db.et-db #et-boc .et-l .syl-mtitle{ font-size: 16px; } .syl-msub, .et-db.et-db.et-db #et-boc .et-l .syl-msub{ font-size: 13px; } .syl-body-inner, .et-db.et-db.et-db #et-boc .et-l .syl-body-inner{ grid-template-columns: 1fr; gap: 18px; padding: 2px 16px 20px; } .syl-media, .et-db.et-db.et-db #et-boc .et-l .syl-media{ position: static; order: -1; }} @media (max-width: 480px) { .syl-title, .et-db.et-db.et-db #et-boc .et-l .syl-title{ font-size: 25px; } .syl-msub, .et-db.et-db.et-db #et-boc .et-l .syl-msub{ display: none; } .syl-node, .et-db.et-db.et-db #et-boc .et-l .syl-node{ width: 40px; height: 40px; font-size: 14px; } .syl-group .syl-module:not(:last-child)::after, .et-db.et-db.et-db #et-boc .et-l .syl-group .syl-module:not(:last-child)::after{ left: 19px; top: 40px; } .syl-rail, .et-db.et-db.et-db #et-boc .et-l .syl-rail{ flex-basis: 40px; }} (function () { var section = document.querySelector('.syl-section'); if (!section) return; // Decide reveal up-front and hide cards before first paint (no flash). var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; var useReveal = !reduce && 'IntersectionObserver' in window; if (useReveal) section.classList.add('syl-js'); var modules = [].slice.call(section.querySelectorAll('.syl-module')); // Each card collapses / expands independently (all open by default) modules.forEach(function (m) { var head = m.querySelector('.syl-head'); if (!head) return; head.addEventListener('click', function () { var collapsed = m.classList.toggle('collapsed'); head.setAttribute('aria-expanded', collapsed ? 'false' : 'true'); }); }); // Lazy-load YouTube on play section.querySelectorAll('.syl-video').forEach(function (v) { v.addEventListener('click', function (e) { e.stopPropagation(); if (v.classList.contains('playing')) return; var id = v.getAttribute('data-video-id'); if (!id) return; var f = document.createElement('iframe'); f.src = 'https://www.youtube.com/embed/' + id + '?autoplay=1&rel=0&modestbranding=1'; f.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'; f.allowFullscreen = true; f.frameBorder = '0'; f.referrerPolicy = 'strict-origin-when-cross-origin'; v.appendChild(f); v.classList.add('playing'); }); }); // Scroll reveal: fade each card up as it scrolls into view (midyear feel) if (useReveal) { var io = new IntersectionObserver(function (entries) { entries.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('syl-in'); io.unobserve(en.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -80px 0px' }); modules.forEach(function (m) { io.observe(m); }); } })();
    .circle-intro-wrapper, .circle-intro-wrapper *, .et-db.et-db.et-db #et-boc .et-l .circle-intro-wrapper, .et-db.et-db.et-db #et-boc .et-l .circle-intro-wrapper *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .circle-intro-wrapper, .et-db.et-db.et-db #et-boc .et-l .circle-intro-wrapper{ --g: #0EA5E9; --g-dark: #0284C7; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --line-soft: #EEF2F6; --paper: #FFFFFF; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); padding: 72px 0; position: relative; overflow: hidden; } /* Background dot pattern */ .circle-intro-wrapper::before, .et-db.et-db.et-db #et-boc .et-l /* Background dot pattern */ .circle-intro-wrapper::before{ content: ''; position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; } .circle-intro-container, .et-db.et-db.et-db #et-boc .et-l .circle-intro-container{ width: 85%; margin: 0 auto; position: relative; z-index: 2; } /* Section Header */ .circle-intro-header, .et-db.et-db.et-db #et-boc .et-l /* Section Header */ .circle-intro-header{ text-align: center; max-width: 760px; margin: 0 auto 40px; } .circle-intro-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark); margin-bottom: 16px; }.et-db.et-db.et-db #et-boc .et-l .circle-intro-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark) !important; margin-bottom: 16px; } .circle-intro-header h2, .et-db.et-db.et-db #et-boc .et-l .circle-intro-header h2{ font-size: clamp(28px, 4vw, 44px) !important; font-weight: 800 !important; color: var(--ink) !important; line-height: 1.15 !important; letter-spacing: -0.02em; margin: 0 0 14px !important; } .circle-intro-header p, .et-db.et-db.et-db #et-boc .et-l .circle-intro-header p{ font-size: 17px !important; color: var(--muted) !important; line-height: 1.6 !important; max-width: 640px; margin: 0 auto !important; } /* Main Content Grid */ .circle-intro-content, .et-db.et-db.et-db #et-boc .et-l /* Main Content Grid */ .circle-intro-content{ display: grid; grid-template-columns: 1fr 1.15fr; gap: 56px; align-items: center; margin-bottom: 0; } /* Left Column - Text */ .circle-intro-text, .et-db.et-db.et-db #et-boc .et-l /* Left Column - Text */ .circle-intro-text{ padding-right: 12px; } .circle-feature-item, .et-db.et-db.et-db #et-boc .et-l .circle-feature-item{ margin-bottom: 32px; } .circle-main-desc, .et-db.et-db.et-db #et-boc .et-l .circle-main-desc{ font-size: 18px !important; color: var(--ink2) !important; line-height: 1.75 !important; margin: 0 !important; } /* Features Grid */ .circle-features-grid, .et-db.et-db.et-db #et-boc .et-l /* Features Grid */ .circle-features-grid{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .circle-feature-box, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box{ background: var(--paper); padding: 24px 18px; border-radius: 18px; border: 1px solid var(--line); box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05); transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease, box-shadow 0.3s ease; text-align: center; } .circle-feature-box:hover, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box:hover{ border-color: rgba(14, 165, 233, 0.35); transform: translateY(-5px); box-shadow: 0 16px 42px rgba(15, 23, 42, 0.10); } .feature-icon-circle{ width: 46px; height: 46px; background: rgba(14, 165, 233, 0.12); color: var(--g); border-radius: 13px; display: flex; align-items: center; justify-content: center; margin: 0 auto 14px; }.et-db.et-db.et-db #et-boc .et-l .feature-icon-circle{ width: 46px; height: 46px; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; border-radius: 13px; display: flex; align-items: center; justify-content: center; margin: 0 auto 14px; } .feature-icon-circle svg, .et-db.et-db.et-db #et-boc .et-l .feature-icon-circle svg{ width: 24px; height: 24px; } .circle-feature-box h4, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box h4{ font-size: 16px !important; font-weight: 700 !important; color: var(--ink) !important; margin: 0 !important; line-height: 1.3 !important; } /* Right Column - Image / GIF */ .circle-intro-media, .et-db.et-db.et-db #et-boc .et-l /* Right Column - Image / GIF */ .circle-intro-media{ position: relative; } .circle-gif-container, .et-db.et-db.et-db #et-boc .et-l .circle-gif-container{ position: relative; border-radius: 20px; overflow: hidden; border: 1px solid var(--line); background: var(--paper); box-shadow: 0 16px 42px rgba(15, 23, 42, 0.10); transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s ease; } .circle-gif-container:hover, .et-db.et-db.et-db #et-boc .et-l .circle-gif-container:hover{ transform: translateY(-6px); box-shadow: 0 22px 54px rgba(15, 23, 42, 0.14); } .circle-gif-container img, .et-db.et-db.et-db #et-boc .et-l .circle-gif-container img{ width: 100%; height: auto; display: block; } /* CTA */ .circle-intro-cta, .et-db.et-db.et-db #et-boc .et-l /* CTA */ .circle-intro-cta{ text-align: center; margin-top: 44px; } .circle-cta-button, .et-db.et-db.et-db #et-boc .et-l .circle-cta-button{ display: inline-block !important; background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%) !important; color: #fff !important; font-size: 17px !important; font-weight: 700 !important; padding: 16px 44px !important; border-radius: 100px !important; text-decoration: none !important; border: none !important; cursor: pointer !important; transition: transform 0.3s ease, box-shadow 0.3s ease !important; box-shadow: 0 10px 30px rgba(14, 165, 233, 0.28) !important; text-transform: none !important; } .circle-cta-button:hover, .et-db.et-db.et-db #et-boc .et-l .circle-cta-button:hover{ transform: translateY(-3px) !important; box-shadow: 0 16px 40px rgba(14, 165, 233, 0.38) !important; color: #fff !important; } /* Scroll reveal — fade up (matches roadmap / syllabus). Gated behind .ci-js. */ .ci-js .circle-intro-header, .ci-js .circle-feature-box, .ci-js .circle-intro-media, .ci-js .circle-intro-cta, .et-db.et-db.et-db #et-boc .et-l /* Scroll reveal — fade up (matches roadmap / syllabus). Gated behind .ci-js. */ .ci-js .circle-intro-header, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-feature-box, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-intro-media, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-intro-cta{ opacity: 0; transform: translateY(22px); transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); } .ci-js .circle-intro-header.ci-in, .ci-js .circle-feature-box.ci-in, .ci-js .circle-intro-media.ci-in, .ci-js .circle-intro-cta.ci-in, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-intro-header.ci-in, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-feature-box.ci-in, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-intro-media.ci-in, .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-intro-cta.ci-in{ opacity: 1; transform: none; } .ci-js .circle-features-grid .circle-feature-box:nth-child(2), .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-features-grid .circle-feature-box:nth-child(2){ transition-delay: 0.08s; } .ci-js .circle-features-grid .circle-feature-box:nth-child(3), .et-db.et-db.et-db #et-boc .et-l .ci-js .circle-features-grid .circle-feature-box:nth-child(3){ transition-delay: 0.16s; } /* ===== Responsive ===== */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* ===== Responsive ===== */ @media (max-width: 1024px){ .circle-intro-wrapper { padding: 56px 0; } .circle-intro-container { width: 92%; } .circle-intro-content { gap: 40px; grid-template-columns: 1fr; } .circle-intro-text { padding-right: 0; order: 2; } .circle-intro-media { order: 1; } } @media (max-width: 768px) { .circle-intro-wrapper, .et-db.et-db.et-db #et-boc .et-l .circle-intro-wrapper{ padding: 44px 0; } .circle-intro-header, .et-db.et-db.et-db #et-boc .et-l .circle-intro-header{ margin-bottom: 32px; } .circle-intro-header p, .et-db.et-db.et-db #et-boc .et-l .circle-intro-header p{ font-size: 16px !important; } .circle-intro-content, .et-db.et-db.et-db #et-boc .et-l .circle-intro-content{ gap: 32px; } .circle-main-desc, .et-db.et-db.et-db #et-boc .et-l .circle-main-desc{ font-size: 17px !important; margin-bottom: 24px !important; } .circle-feature-item, .et-db.et-db.et-db #et-boc .et-l .circle-feature-item{ margin-bottom: 0; } .circle-features-grid, .et-db.et-db.et-db #et-boc .et-l .circle-features-grid{ gap: 12px; } .circle-feature-box, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box{ padding: 18px 12px; } .feature-icon-circle, .et-db.et-db.et-db #et-boc .et-l .feature-icon-circle{ width: 42px; height: 42px; margin-bottom: 12px; } .circle-feature-box h4, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box h4{ font-size: 15px !important; line-height: 1.25 !important; } .circle-cta-button, .et-db.et-db.et-db #et-boc .et-l .circle-cta-button{ width: 100%; max-width: 400px; }} @media (max-width: 480px) { .circle-main-desc, .et-db.et-db.et-db #et-boc .et-l .circle-main-desc{ font-size: 16px !important; } .circle-features-grid, .et-db.et-db.et-db #et-boc .et-l .circle-features-grid{ gap: 10px; } .circle-feature-box, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box{ padding: 16px 10px; } .feature-icon-circle, .et-db.et-db.et-db #et-boc .et-l .feature-icon-circle{ width: 38px; height: 38px; margin-bottom: 10px; } .feature-icon-circle svg, .et-db.et-db.et-db #et-boc .et-l .feature-icon-circle svg{ width: 20px; height: 20px; } .circle-feature-box h4, .et-db.et-db.et-db #et-boc .et-l .circle-feature-box h4{ font-size: 13px !important; }}
    KHÔNG GIAN HỌC TẬP

    Nền tảng học tập tương tác Circle.so

    Học SQL chủ động mọi lúc – tài liệu đầy đủ – kiểm tra ngay sau mỗi phần

    Học viên có thể truy cập bài học SQL bất cứ lúc nào, xem lại không giới hạn, đi kèm handout chi tiết và mini quiz sau mỗi part giúp củng cố kiến thức và đảm bảo bạn hiểu đúng trước khi bước sang nội dung tiếp theo.

    Học mọi lúc mọi nơi

    Tài liệu đầy đủ

    Kiểm tra ngay lập tức

    <!-- ========================================== THAY ẢNH NÀY BẰNG GIF THỰC TẾ CỦA KHÓA SQL ========================================== SIZE: Width 1200–1400px · Aspect ~16:10 · GIF/MP4/WebP · < 5MB --> Circle.so Platform Demo - SQL Course
    (function () { var w = document.querySelector('.circle-intro-wrapper'); if (!w) return; var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce || !('IntersectionObserver' in window)) return; w.classList.add('ci-js'); var els = [].slice.call(w.querySelectorAll('.circle-intro-header, .circle-feature-box, .circle-intro-media, .circle-intro-cta')); var io = new IntersectionObserver(function (entries) { entries.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('ci-in'); io.unobserve(en.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -80px 0px' }); els.forEach(function (el) { io.observe(el); }); })();
    GIÁ KHÓA HỌC

    Đầu tư vào kỹ năng SQL

    Chọn gói phù hợp để bạn thành thạo SQL và trở thành Data Analyst chuyên nghiệp

    <!-- U24 notice (ngay trên toggle)

    U24 Scholarship: Ưu đãi thêm 400K nếu bạn dưới 24 tuổi (sinh viên hoặc bạn mới ra trường)

    -->

    SQL For Data Analytics

    SQL từ Query cơ bản đến Expert

    VND
    Chọn gói này
    QUYỀN LỢI
    • 104 video bài giảng
    • ~12 giờ học
    • 7 modules từ cơ bản đến nâng cao
    • E-learning trọn đời
    • Community support

    Combo E-learning

    AI Data Analytics E-Learning Series

    VND
    Chọn gói này
    QUYỀN LỢI
    • Data Analytics 101 for Everyone
    • AI-Powered Excel & Google Sheet for Data Analytics
    • SQL For Data Analytics
    • Python For Data Analytics
    .data-pricing-wrapper, .data-pricing-wrapper *, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .data-pricing-wrapper{ --g: #0EA5E9; --g-dark: #0284C7; --g-deep: #075985; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --line-soft: #EEF2F6; --paper: #FFFFFF; --danger: #DC2626; position: relative; overflow: hidden; padding: 56px 0; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); line-height: normal; color: inherit; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper{ --g: #0EA5E9; --g-dark: #0284C7; --g-deep: #075985; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --line-soft: #EEF2F6; --paper: #FFFFFF; --danger: #DC2626; position: relative; overflow: hidden; padding: 56px 0; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); line-height: normal; color: inherit !important; } .data-pricing-wrapper .dp-bg, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .dp-bg{ position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; z-index: 0; } .data-pricing-wrapper>*:not(.dp-bg), .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper>*:not(.dp-bg){ position: relative; z-index: 1; } /* MAIN HEADER */ .data-pricing-wrapper .pricing-header, .et-db.et-db.et-db #et-boc .et-l /* MAIN HEADER */ .data-pricing-wrapper .pricing-header{ text-align: center; max-width: 760px; margin: 0 auto 30px; } .data-pricing-wrapper .pricing-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark); margin-bottom: 14px; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark) !important; margin-bottom: 14px; } .data-pricing-wrapper .pricing-header h2, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-header h2{ font-size: clamp(28px, 4vw, 42px) !important; font-weight: 800 !important; color: var(--ink) !important; margin: 0 0 12px !important; line-height: 1.15 !important; letter-spacing: -0.02em; } .data-pricing-wrapper .pricing-header p, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-header p{ font-size: 17px !important; color: var(--muted) !important; line-height: 1.6 !important; margin: 0 !important; } /* U24 notice */ .data-pricing-wrapper .pricing-step-notice-wrapper, .et-db.et-db.et-db #et-boc .et-l /* U24 notice */ .data-pricing-wrapper .pricing-step-notice-wrapper{ display: flex; justify-content: center; width: 100%; margin-bottom: 16px; } .data-pricing-wrapper .pricing-step-notice, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-step-notice{ display: inline-flex; align-items: center; gap: 10px; max-width: 720px; background: rgba(14, 165, 233, 0.07); border: 1px solid rgba(14, 165, 233, 0.20); border-radius: 14px; padding: 11px 18px; } .data-pricing-wrapper .notice-icon{ display: flex; flex-shrink: 0; color: var(--g); }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .notice-icon{ display: flex; flex-shrink: 0; color: var(--g) !important; } .data-pricing-wrapper .notice-icon svg, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .notice-icon svg{ width: 22px; height: 22px; } .data-pricing-wrapper .pricing-step-notice p, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-step-notice p{ font-size: 15px !important; color: var(--g-dark) !important; font-weight: 600 !important; margin: 0 !important; line-height: 1.45 !important; text-align: left; } /* Toggle */ .data-pricing-wrapper .pricing-tabs, .et-db.et-db.et-db #et-boc .et-l /* Toggle */ .data-pricing-wrapper .pricing-tabs{ display: flex !important; justify-content: center !important; margin: 0 auto 24px auto !important; width: 100% !important; padding: 0 !important; } .data-pricing-wrapper .toggle-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-container{ background: var(--paper); border-radius: 100px; padding: 5px; display: inline-flex; gap: 4px; box-shadow: 0 6px 20px rgba(15, 23, 42, 0.07); border: 1px solid var(--line); flex-wrap: wrap; justify-content: center; } .data-pricing-wrapper .toggle-btn{ padding: 10px 24px; border: none; background: transparent; color: var(--muted); font-size: 16px !important; font-weight: 700 !important; cursor: pointer; border-radius: 100px; transition: all 0.3s ease; white-space: nowrap; display: flex; align-items: center; gap: 8px; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn{ padding: 10px 24px; border: none; background: transparent; color: var(--muted) !important; font-size: 16px !important; font-weight: 700 !important; cursor: pointer; border-radius: 100px; transition: all 0.3s ease; white-space: nowrap; display: flex; align-items: center; gap: 8px; } .data-pricing-wrapper .toggle-text, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-text{ display: block; } .data-pricing-wrapper .toggle-discount{ display: inline-block; font-size: 12px; font-weight: 700; background: rgba(14, 165, 233, 0.12); color: var(--g-dark); padding: 2px 9px; border-radius: 100px; transition: all 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-discount{ display: inline-block; font-size: 12px; font-weight: 700; background: rgba(14, 165, 233, 0.12); color: var(--g-dark) !important; padding: 2px 9px; border-radius: 100px; transition: all 0.3s ease; } .data-pricing-wrapper .toggle-btn.active, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn.active{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%); color: #fff !important; box-shadow: 0 4px 12px rgba(14, 165, 233, 0.3); } .data-pricing-wrapper .toggle-btn.active .toggle-discount{ background: rgba(255, 255, 255, 0.25); color: #fff; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn.active .toggle-discount{ background: rgba(255, 255, 255, 0.25); color: #fff !important; } .data-pricing-wrapper .toggle-btn:hover:not(.active), .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn:hover:not(.active){ color: var(--g) !important; } /* Grid */ .data-pricing-wrapper .pricing-container, .et-db.et-db.et-db #et-boc .et-l /* Grid */ .data-pricing-wrapper .pricing-container{ width: 88%; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; } .data-pricing-wrapper .pricing-card, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-card{ background: var(--paper); border-radius: 18px; padding: 24px 22px; position: relative; border: 1px solid var(--line); box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05); display: flex; flex-direction: column; transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease, box-shadow 0.3s ease; } /* Card giu nguyen the hien tu HTML server tra ve. Truoc day .card-visible do script rieng cua trang gan vao, ma script do da bi go khi chuyen sang plugin gia, nen card dung o opacity:0 va khong bao gio hien ra du bam toggle hay khong. */ .data-pricing-wrapper .pricing-card.card-visible, .et-db.et-db.et-db #et-boc .et-l /* Card giu nguyen the hien tu HTML server tra ve. Truoc day .card-visible do script rieng cua trang gan vao, .et-db.et-db.et-db #et-boc .et-l ma script do da bi go khi chuyen sang plugin gia, .et-db.et-db.et-db #et-boc .et-l nen card dung o opacity:0 va khong bao gio hien ra du bam toggle hay khong. */ .data-pricing-wrapper .pricing-card.card-visible{ opacity: 1; transform: none; } /* Khoi tfa_pricing boc quanh tung card, de no khong thanh mot o luoi rieng. */ .data-pricing-wrapper .pricing-container > .tfa-pricing, .et-db.et-db.et-db #et-boc .et-l /* Khoi tfa_pricing boc quanh tung card, .et-db.et-db.et-db #et-boc .et-l de no khong thanh mot o luoi rieng. */ .data-pricing-wrapper .pricing-container > .tfa-pricing{ display: contents; } /* Doi muc gia: card nay len mot nhip. is-switching do plugin gan trong 320ms. */ .data-pricing-wrapper .tfa-pricing.is-switching .pricing-card, .et-db.et-db.et-db #et-boc .et-l /* Doi muc gia: card nay len mot nhip. is-switching do plugin gan trong 320ms. */ .data-pricing-wrapper .tfa-pricing.is-switching .pricing-card{ animation: cardPop 0.32s cubic-bezier(0.22, 1, 0.36, 1); } @keyframes cardPop { 0% { opacity: 0.35; transform: translateY(8px) scale(0.985); } 100% { opacity: 1; transform: none; } } /* Visible: transition drives fade+slide in */ .data-pricing-wrapper .pricing-card.card-visible, .et-db.et-db.et-db #et-boc .et-l /* Visible: transition drives fade+slide in */ .data-pricing-wrapper .pricing-card.card-visible{ opacity: 1; transform: translateY(0); } /* Exit: fast fade up */ .data-pricing-wrapper .pricing-card.card-exit, .et-db.et-db.et-db #et-boc .et-l /* Exit: fast fade up */ .data-pricing-wrapper .pricing-card.card-exit{ opacity: 0 !important; transform: translateY(-12px) !important; transition: opacity 0.18s ease-in !important, transform 0.18s ease-in !important; } /* Hover — only when visible */ .data-pricing-wrapper .pricing-card:hover, .et-db.et-db.et-db #et-boc .et-l /* Hover — only when visible */ .data-pricing-wrapper .pricing-card:hover{ transform: translateY(-6px); border-color: rgba(14, 165, 233, 0.35); box-shadow: 0 16px 42px rgba(15, 23, 42, 0.10); } /* Hidden */ .data-pricing-wrapper .pricing-card.card-hidden, .et-db.et-db.et-db #et-boc .et-l /* Hidden */ .data-pricing-wrapper .pricing-card.card-hidden{ display: none !important; } /* Stagger transition-delay per card index (CSS-driven) */ .data-pricing-wrapper .pricing-card[data-stagger="0"], .et-db.et-db.et-db #et-boc .et-l /* Stagger transition-delay per card index (CSS-driven) */ .data-pricing-wrapper .pricing-card[data-stagger="0"]{ transition-delay: 0ms; } .data-pricing-wrapper .pricing-card[data-stagger="1"], .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-card[data-stagger="1"]{ transition-delay: 80ms; } .data-pricing-wrapper .pricing-card[data-stagger="2"], .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-card[data-stagger="2"]{ transition-delay: 160ms; } .data-pricing-wrapper .pricing-card[data-stagger="3"], .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-card[data-stagger="3"]{ transition-delay: 240ms; } /* Featured */ .data-pricing-wrapper .pricing-card.featured, .et-db.et-db.et-db #et-boc .et-l /* Featured */ .data-pricing-wrapper .pricing-card.featured{ background: linear-gradient(135deg, #EFF8FF 0%, #FFFFFF 100%); border: 1.5px solid var(--g); box-shadow: 0 16px 44px rgba(14, 165, 233, 0.14); } .data-pricing-wrapper .pricing-card.featured:hover, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-card.featured:hover{ transform: translateY(-6px); border-color: var(--g); box-shadow: 0 18px 48px rgba(14, 165, 233, 0.22); } /* Badge */ .data-pricing-wrapper .card-badge{ position: absolute; top: -12px; right: 22px; display: inline-flex; align-items: center; gap: 5px; padding: 6px 14px; border-radius: 100px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; color: #fff; }.et-db.et-db.et-db #et-boc .et-l /* Badge */ .data-pricing-wrapper .card-badge{ position: absolute; top: -12px; right: 22px; display: inline-flex; align-items: center; gap: 5px; padding: 6px 14px; border-radius: 100px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; color: #fff !important; } .data-pricing-wrapper .card-badge svg, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .card-badge svg{ width: 12px; height: 12px; } .data-pricing-wrapper .card-badge.popular, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .card-badge.popular{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%); box-shadow: 0 6px 14px rgba(14, 165, 233, 0.32); } /* Icon */ .data-pricing-wrapper .card-icon{ width: 48px; height: 48px; border-radius: 14px; background: rgba(14, 165, 233, 0.12); color: var(--g); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; }.et-db.et-db.et-db #et-boc .et-l /* Icon */ .data-pricing-wrapper .card-icon{ width: 48px; height: 48px; border-radius: 14px; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; display: flex; align-items: center; justify-content: center; margin-bottom: 12px; } .data-pricing-wrapper .card-icon svg, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .card-icon svg{ width: 24px; height: 24px; } /* Title */ .data-pricing-wrapper .card-title, .et-db.et-db.et-db #et-boc .et-l /* Title */ .data-pricing-wrapper .card-title{ text-decoration: none; display: block; margin-bottom: 8px; min-height: 64px; } .data-pricing-wrapper .card-title h3, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .card-title h3{ font-size: 21px !important; font-weight: 700 !important; color: var(--ink) !important; margin: 0 0 4px !important; line-height: 1.3 !important; } .data-pricing-wrapper .card-title h4, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .card-title h4{ font-size: 14px !important; font-weight: 600 !important; color: var(--muted) !important; line-height: 1.4 !important; margin: 0 !important; } /* Price */ .data-pricing-wrapper .card-price, .et-db.et-db.et-db #et-boc .et-l /* Price */ .data-pricing-wrapper .card-price{ margin: 10px 0 14px 0; min-height: 58px; } .data-pricing-wrapper .price-main, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-main{ display: flex; align-items: baseline; gap: 8px; margin-bottom: 6px; } .data-pricing-wrapper .price-current, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-current{ font-size: 30px !important; font-weight: 800 !important; color: var(--ink) !important; line-height: 1 !important; letter-spacing: -0.02em; } .data-pricing-wrapper .price-currency, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-currency{ font-size: 15px !important; font-weight: 600 !important; color: var(--muted) !important; } .data-pricing-wrapper .price-info, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-info{ display: flex; align-items: center; gap: 10px; } .data-pricing-wrapper .price-old{ font-size: 14px; color: #9CA3AF; text-decoration: line-through; font-weight: 500; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-old{ font-size: 14px; color: #9CA3AF !important; text-decoration: line-through; font-weight: 500; } .data-pricing-wrapper .price-discount{ background: #FEF2F2; color: var(--danger); padding: 3px 11px; border-radius: 100px; font-size: 12px; font-weight: 700; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-discount{ background: #FEF2F2; color: var(--danger) !important; padding: 3px 11px; border-radius: 100px; font-size: 12px; font-weight: 700; } /* Button */ .data-pricing-wrapper .pricing-btn, .et-db.et-db.et-db #et-boc .et-l /* Button */ .data-pricing-wrapper .pricing-btn{ width: 100% !important; padding: 12px 26px !important; font-size: 16px !important; font-weight: 700 !important; background: var(--paper) !important; color: var(--g) !important; border: 2px solid var(--g) !important; border-radius: 12px !important; cursor: pointer !important; transition: all 0.3s ease !important; margin-bottom: 16px !important; text-decoration: none !important; display: inline-block !important; text-align: center !important; position: relative !important; } .data-pricing-wrapper .pricing-btn:hover, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-btn:hover{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%) !important; color: #fff !important; transform: translateY(-2px) !important; box-shadow: 0 10px 24px rgba(14, 165, 233, 0.28) !important; } .data-pricing-wrapper .pricing-btn.primary, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-btn.primary{ background: linear-gradient(135deg, var(--g) 0%, var(--g-dark) 100%) !important; color: #fff !important; } .data-pricing-wrapper .pricing-btn.primary:hover, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-btn.primary:hover{ background: linear-gradient(135deg, var(--g-dark) 0%, var(--g-deep) 100%) !important; } /* Loading state */ .data-pricing-wrapper .pricing-btn.loading, .et-db.et-db.et-db #et-boc .et-l /* Loading state */ .data-pricing-wrapper .pricing-btn.loading{ pointer-events: none; opacity: 0.7; } .data-pricing-wrapper .pricing-btn.loading::after, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-btn.loading::after{ content: ''; position: absolute; width: 16px; height: 16px; top: 50%; right: 20px; margin-top: -8px; border: 2px solid currentColor; border-radius: 50%; border-top-color: transparent; animation: spinner 0.6s linear infinite; } @keyframes spinner { to { transform: rotate(360deg); } } /* Features */ .data-pricing-wrapper .card-features-wrapper, .et-db.et-db.et-db #et-boc .et-l /* Features */ .data-pricing-wrapper .card-features-wrapper{ flex-grow: 1; } .data-pricing-wrapper .features-header, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .features-header{ font-size: 12px !important; font-weight: 700 !important; color: var(--muted) !important; text-transform: uppercase !important; letter-spacing: 0.06em !important; margin-bottom: 8px !important; } .data-pricing-wrapper .features-list, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .features-list{ list-style: none; padding: 0; margin: 0; } .data-pricing-wrapper .features-list li{ position: relative; padding: 6px 0 6px 28px; color: var(--ink2); font-size: 15px; font-weight: 500; line-height: 1.5; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .features-list li{ position: relative; padding: 6px 0 6px 28px; color: var(--ink2) !important; font-size: 15px; font-weight: 500; line-height: 1.5; } .data-pricing-wrapper .features-list li::before{ content: '\2713'; position: absolute; left: 0; top: 7px; width: 19px; height: 19px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g); font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; line-height: 1; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .features-list li::before{ content: '\2713'; position: absolute; left: 0; top: 7px; width: 19px; height: 19px; border-radius: 50%; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; line-height: 1; } /* Footer */ .data-pricing-wrapper .pricing-footer, .et-db.et-db.et-db #et-boc .et-l /* Footer */ .data-pricing-wrapper .pricing-footer{ text-align: center; margin-top: 28px; padding: 20px; background: var(--paper); border-radius: 18px; border: 1px solid var(--line); box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05); width: 88%; margin-left: auto; margin-right: auto; } .data-pricing-wrapper .pricing-footer p, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer p{ font-size: 15px !important; color: var(--ink2) !important; font-weight: 500 !important; margin: 6px 0 !important; line-height: 1.6 !important; display: flex; align-items: center; justify-content: center; gap: 8px; } .data-pricing-wrapper .pricing-footer svg{ width: 18px; height: 18px; color: var(--g); flex-shrink: 0; }.et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer svg{ width: 18px; height: 18px; color: var(--g) !important; flex-shrink: 0; } .data-pricing-wrapper .pricing-footer a, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer a{ color: var(--g) !important; text-decoration: none !important; font-weight: 600 !important; } .data-pricing-wrapper .pricing-footer a:hover, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer a:hover{ text-decoration: underline !important; } /* ===== Responsive ===== */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* ===== Responsive ===== */ @media (max-width: 1024px){ .data-pricing-wrapper .pricing-container, .data-pricing-wrapper .pricing-footer { width: 92%; max-width: 92%; } } @media (min-width: 769px) and (max-width: 1024px) { .data-pricing-wrapper .pricing-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-container{ grid-template-columns: repeat(2, 1fr); }} @media (min-width: 1025px) { .data-pricing-wrapper .pricing-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-container{ grid-template-columns: repeat(3, 1fr); }} @media (max-width: 768px) { .data-pricing-wrapper, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper{ padding: 44px 0; } .data-pricing-wrapper .pricing-header, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-header{ margin-bottom: 24px; } .data-pricing-wrapper .pricing-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-container{ grid-template-columns: 1fr; gap: 18px; width: 90%; } .data-pricing-wrapper .pricing-footer, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer{ width: 90%; } .data-pricing-wrapper .toggle-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-container{ width: 90%; gap: 2px; padding: 4px; } .data-pricing-wrapper .toggle-btn, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn{ font-size: 14px !important; padding: 9px 14px; flex: 1; min-width: 0; justify-content: center; } .data-pricing-wrapper .toggle-discount, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-discount{ font-size: 11px; padding: 2px 7px; } .data-pricing-wrapper .pricing-step-notice p, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-step-notice p{ font-size: 14px !important; }} @media (max-width: 480px) { .data-pricing-wrapper .pricing-container, .data-pricing-wrapper .pricing-footer, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-container, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .pricing-footer{ width: 90%; } .data-pricing-wrapper .price-current, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .price-current{ font-size: 28px !important; } .data-pricing-wrapper .toggle-btn, .et-db.et-db.et-db #et-boc .et-l .data-pricing-wrapper .toggle-btn{ padding: 8px 10px; font-size: 12px !important; }}
    .combo-projects-section, .combo-projects-section *, .et-db.et-db.et-db #et-boc .et-l .combo-projects-section, .et-db.et-db.et-db #et-boc .et-l .combo-projects-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .combo-projects-section, .et-db.et-db.et-db #et-boc .et-l .combo-projects-section{ --g: #0EA5E9; --g-dark: #0284C7; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --paper: #FFFFFF; padding: 56px 0; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); position: relative; overflow: hidden; } .combo-projects-section .combo-bg, .et-db.et-db.et-db #et-boc .et-l .combo-projects-section .combo-bg{ position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; z-index: 0; } .combo-projects-container, .et-db.et-db.et-db #et-boc .et-l .combo-projects-container{ position: relative; z-index: 1; } .combo-projects-header, .et-db.et-db.et-db #et-boc .et-l .combo-projects-header{ text-align: center; max-width: 760px; margin: 0 auto 40px; padding: 0 24px; } .combo-projects-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark); margin-bottom: 14px; }.et-db.et-db.et-db #et-boc .et-l .combo-projects-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark) !important; margin-bottom: 14px; } .combo-projects-header h2, .et-db.et-db.et-db #et-boc .et-l .combo-projects-header h2{ font-size: clamp(28px, 4vw, 42px) !important; font-weight: 800; margin: 0 0 12px; color: var(--ink) !important; line-height: 1.15; letter-spacing: -0.02em; } .combo-projects-header .combo-subtitle, .et-db.et-db.et-db #et-boc .et-l .combo-projects-header .combo-subtitle{ font-size: 17px; color: var(--muted) !important; line-height: 1.6; margin: 0; } /* Marquee */ .combo-projects-slider-wrapper, .et-db.et-db.et-db #et-boc .et-l /* Marquee */ .combo-projects-slider-wrapper{ position: relative; overflow: hidden; padding: 14px 0; } .combo-projects-slider-track, .et-db.et-db.et-db #et-boc .et-l .combo-projects-slider-track{ display: flex; gap: 24px; width: max-content; padding: 0 12px; } .combo-slide-left, .et-db.et-db.et-db #et-boc .et-l .combo-slide-left{ animation: slideProjectsLeft 55s linear infinite; } .combo-slide-right, .et-db.et-db.et-db #et-boc .et-l .combo-slide-right{ animation: slideProjectsRight 55s linear infinite; } .combo-projects-slider-wrapper:hover .combo-projects-slider-track, .et-db.et-db.et-db #et-boc .et-l .combo-projects-slider-wrapper:hover .combo-projects-slider-track{ animation-play-state: paused; } @keyframes slideProjectsLeft { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } @keyframes slideProjectsRight { 0% { transform: translateX(-50%); } 100% { transform: translateX(0); } } /* Card */ .combo-project-card, .et-db.et-db.et-db #et-boc .et-l /* Card */ .combo-project-card{ flex: 0 0 auto; width: 460px; height: 290px; position: relative; border-radius: 18px !important; overflow: hidden; display: block; border: 1px solid var(--line); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.10) !important; transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s ease; } .combo-project-image, .et-db.et-db.et-db #et-boc .et-l .combo-project-image{ width: 100% !important; height: 100% !important; object-fit: cover !important; object-position: top center !important; display: block; transition: transform 0.5s ease; } .combo-project-card:hover, .et-db.et-db.et-db #et-boc .et-l .combo-project-card:hover{ transform: translateY(-8px); box-shadow: 0 22px 50px rgba(14, 165, 233, 0.22) !important; } .combo-project-card:hover .combo-project-image, .et-db.et-db.et-db #et-boc .et-l .combo-project-card:hover .combo-project-image{ transform: scale(1.06); } /* Project name caption (always visible) */ .combo-project-name{ position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; align-items: center; gap: 8px; padding: 28px 18px 14px; background: linear-gradient(to top, rgba(13, 20, 33, 0.88) 0%, rgba(13, 20, 33, 0.55) 45%, transparent 100%); color: #fff; font-size: 16px; font-weight: 700; letter-spacing: 0.01em; }.et-db.et-db.et-db #et-boc .et-l /* Project name caption (always visible) */ .combo-project-name{ position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; align-items: center; gap: 8px; padding: 28px 18px 14px; background: linear-gradient(to top, rgba(13, 20, 33, 0.88) 0%, rgba(13, 20, 33, 0.55) 45%, transparent 100%); color: #fff !important; font-size: 16px; font-weight: 700; letter-spacing: 0.01em; } .combo-project-name::before, .et-db.et-db.et-db #et-boc .et-l .combo-project-name::before{ content: ''; width: 8px; height: 8px; border-radius: 50%; background: #5BD6A8; flex-shrink: 0; box-shadow: 0 0 0 3px rgba(91, 214, 168, 0.25); } /* Zoom hint on hover */ .combo-project-zoom{ position: absolute; top: 14px; right: 14px; width: 38px; height: 38px; background: rgba(255, 255, 255, 0.92); color: var(--g); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 4; opacity: 0; transform: scale(0.6); transition: all 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l /* Zoom hint on hover */ .combo-project-zoom{ position: absolute; top: 14px; right: 14px; width: 38px; height: 38px; background: rgba(255, 255, 255, 0.92); color: var(--g) !important; border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 4; opacity: 0; transform: scale(0.6); transition: all 0.3s ease; } .combo-project-zoom svg, .et-db.et-db.et-db #et-boc .et-l .combo-project-zoom svg{ width: 18px; height: 18px; } .combo-project-card:hover .combo-project-zoom, .et-db.et-db.et-db #et-boc .et-l .combo-project-card:hover .combo-project-zoom{ opacity: 1; transform: scale(1); } /* Scroll reveal (header) */ .co-js .combo-projects-header, .co-js .combo-projects-row, .et-db.et-db.et-db #et-boc .et-l /* Scroll reveal (header) */ .co-js .combo-projects-header, .et-db.et-db.et-db #et-boc .et-l .co-js .combo-projects-row{ opacity: 0; transform: translateY(22px); transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); } .co-js .combo-projects-header.co-in, .co-js .combo-projects-row.co-in, .et-db.et-db.et-db #et-boc .et-l .co-js .combo-projects-header.co-in, .et-db.et-db.et-db #et-boc .et-l .co-js .combo-projects-row.co-in{ opacity: 1; transform: none; } .co-js .combo-projects-row:nth-of-type(2), .et-db.et-db.et-db #et-boc .et-l .co-js .combo-projects-row:nth-of-type(2){ transition-delay: 0.1s; } /* Responsive */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* Responsive */ @media (max-width: 1024px){ .combo-projects-section { padding: 48px 0; } } @media (max-width: 768px) { .combo-projects-section, .et-db.et-db.et-db #et-boc .et-l .combo-projects-section{ padding: 44px 0; } .combo-projects-header, .et-db.et-db.et-db #et-boc .et-l .combo-projects-header{ margin-bottom: 28px; } .combo-project-card, .et-db.et-db.et-db #et-boc .et-l .combo-project-card{ width: 340px; height: 214px; } .combo-project-name, .et-db.et-db.et-db #et-boc .et-l .combo-project-name{ font-size: 15px; }} @media (max-width: 480px) { .combo-project-card, .et-db.et-db.et-db #et-boc .et-l .combo-project-card{ width: 280px; height: 176px; }}
    THÀNH QUẢ HỌC VIÊN

    Projects từ học viên thực tế

    Khám phá các dự án SQL ấn tượng được xây dựng bởi học viên sau khóa học

    (function () { // Duplicate cards for seamless infinite marquee function setupTrack(id) { var track = document.getElementById(id); if (!track) return; Array.prototype.slice.call(track.children).forEach(function (card) { track.appendChild(card.cloneNode(true)); }); } setupTrack('comboProjectsRow1'); setupTrack('comboProjectsRow2'); // Scroll reveal for header + rows var section = document.querySelector('.combo-projects-section'); if (!section) return; var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce || !('IntersectionObserver' in window)) return; section.classList.add('co-js'); var els = [].slice.call(section.querySelectorAll('.combo-projects-header, .combo-projects-row')); var io = new IntersectionObserver(function (entries) { entries.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('co-in'); io.unobserve(en.target); } }); }, { threshold: 0.1, rootMargin: '0px 0px -60px 0px' }); els.forEach(function (el) { io.observe(el); }); })();
    .post-advantages-section, .post-advantages-section *, .et-db.et-db.et-db #et-boc .et-l .post-advantages-section, .et-db.et-db.et-db #et-boc .et-l .post-advantages-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .post-advantages-section, .et-db.et-db.et-db #et-boc .et-l .post-advantages-section{ --g: #0EA5E9; --g-dark: #0284C7; --ink: #0F172A; --ink2: #1E293B; --muted: #64748B; --line: #E3E8EF; --line-soft: #EEF2F6; --paper: #FFFFFF; padding: 56px 0; background: linear-gradient(180deg, #FFFFFF 0%, #EFF8FF 55%, #FFFFFF 100%); position: relative; overflow: hidden; } .post-advantages-section .pa-bg, .et-db.et-db.et-db #et-boc .et-l .post-advantages-section .pa-bg{ position: absolute; inset: 0; background: url('data:image/svg+xml,%3Csvg width=%2760%27 height=%2760%27 viewBox=%270 0 60 60%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cg fill=%27none%27 fill-rule=%27evenodd%27%3E%3Cg fill=%27%230EA5E9%27 fill-opacity=%270.04%27%3E%3Cpath d=%27M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z%27/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); pointer-events: none; } .post-advantages-container, .et-db.et-db.et-db #et-boc .et-l .post-advantages-container{ width: 85%; margin: 0 auto; position: relative; z-index: 1; } /* Header */ .post-advantages-header, .et-db.et-db.et-db #et-boc .et-l /* Header */ .post-advantages-header{ text-align: center; max-width: 760px; margin: 0 auto 36px; } .post-advantages-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark); margin-bottom: 14px; }.et-db.et-db.et-db #et-boc .et-l .post-advantages-badge{ display: inline-block; background: rgba(14, 165, 233, 0.10); padding: 7px 16px; border-radius: 100px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: var(--g-dark) !important; margin-bottom: 14px; } .post-advantages-header h2{ font-size: clamp(28px, 4vw, 42px) !important; font-weight: 800; margin: 0 0 12px; color: var(--ink); line-height: 1.15; letter-spacing: -0.02em; }.et-db.et-db.et-db #et-boc .et-l .post-advantages-header h2{ font-size: clamp(28px, 4vw, 42px) !important; font-weight: 800; margin: 0 0 12px; color: var(--ink) !important; line-height: 1.15; letter-spacing: -0.02em; } .post-advantages-subtitle{ font-size: 17px; color: var(--muted); line-height: 1.6; margin: 0; }.et-db.et-db.et-db #et-boc .et-l .post-advantages-subtitle{ font-size: 17px; color: var(--muted) !important; line-height: 1.6; margin: 0; } /* Grid */ .post-advantages-grid, .post-advantages-grid-row2, .et-db.et-db.et-db #et-boc .et-l /* Grid */ .post-advantages-grid, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid-row2{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; } .post-advantages-grid-row2, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid-row2{ margin-top: 22px; } /* Card */ .advantage-card, .et-db.et-db.et-db #et-boc .et-l /* Card */ .advantage-card{ background: var(--paper); border-radius: 20px; border: 1px solid var(--line); box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05); overflow: hidden; display: flex; flex-direction: column; transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s ease, box-shadow 0.3s ease; } .advantage-card:hover, .et-db.et-db.et-db #et-boc .et-l .advantage-card:hover{ transform: translateY(-6px); border-color: rgba(14, 165, 233, 0.35); box-shadow: 0 18px 46px rgba(15, 23, 42, 0.12); } /* Card image — kept prominent */ .advantage-card-image, .et-db.et-db.et-db #et-boc .et-l /* Card image — kept prominent */ .advantage-card-image{ width: 100%; height: 188px; background: linear-gradient(135deg, #E8F5ED 0%, #D1E7DC 100%); overflow: hidden; } .advantage-card-image img, .et-db.et-db.et-db #et-boc .et-l .advantage-card-image img{ width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.45s ease; } .advantage-card:hover .advantage-card-image img, .et-db.et-db.et-db #et-boc .et-l .advantage-card:hover .advantage-card-image img{ transform: scale(1.05); } /* Card content */ .advantage-card-content, .et-db.et-db.et-db #et-boc .et-l /* Card content */ .advantage-card-content{ padding: 22px; flex: 1; display: flex; flex-direction: column; } .advantage-icon{ width: 46px; height: 46px; background: rgba(14, 165, 233, 0.12); color: var(--g); border-radius: 13px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }.et-db.et-db.et-db #et-boc .et-l .advantage-icon{ width: 46px; height: 46px; background: rgba(14, 165, 233, 0.12); color: var(--g) !important; border-radius: 13px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; } .advantage-icon svg, .et-db.et-db.et-db #et-boc .et-l .advantage-icon svg{ width: 24px; height: 24px; } .advantage-card-title{ font-size: 19px; font-weight: 700; color: var(--ink); margin: 0 0 10px; line-height: 1.3; }.et-db.et-db.et-db #et-boc .et-l .advantage-card-title{ font-size: 19px; font-weight: 700; color: var(--ink) !important; margin: 0 0 10px; line-height: 1.3; } .advantage-card-description{ font-size: 15px; color: var(--muted); line-height: 1.6; margin: 0; flex: 1; }.et-db.et-db.et-db #et-boc .et-l .advantage-card-description{ font-size: 15px; color: var(--muted) !important; line-height: 1.6; margin: 0; flex: 1; } /* Scroll reveal */ .pa-js .post-advantages-header, .pa-js .advantage-card, .et-db.et-db.et-db #et-boc .et-l /* Scroll reveal */ .pa-js .post-advantages-header, .et-db.et-db.et-db #et-boc .et-l .pa-js .advantage-card{ opacity: 0; transform: translateY(22px); transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); } .pa-js .post-advantages-header.pa-in, .pa-js .advantage-card.pa-in, .et-db.et-db.et-db #et-boc .et-l .pa-js .post-advantages-header.pa-in, .et-db.et-db.et-db #et-boc .et-l .pa-js .advantage-card.pa-in{ opacity: 1; transform: none; } .pa-js .advantage-card.pa-in:hover, .et-db.et-db.et-db #et-boc .et-l .pa-js .advantage-card.pa-in:hover{ transform: translateY(-6px); } .pa-js .post-advantages-grid .advantage-card:nth-child(2), .pa-js .post-advantages-grid-row2 .advantage-card:nth-child(2), .et-db.et-db.et-db #et-boc .et-l .pa-js .post-advantages-grid .advantage-card:nth-child(2), .et-db.et-db.et-db #et-boc .et-l .pa-js .post-advantages-grid-row2 .advantage-card:nth-child(2){ transition-delay: 0.08s; } .pa-js .post-advantages-grid .advantage-card:nth-child(3), .pa-js .post-advantages-grid-row2 .advantage-card:nth-child(3), .et-db.et-db.et-db #et-boc .et-l .pa-js .post-advantages-grid .advantage-card:nth-child(3), .et-db.et-db.et-db #et-boc .et-l .pa-js .post-advantages-grid-row2 .advantage-card:nth-child(3){ transition-delay: 0.16s; } /* Responsive */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* Responsive */ @media (max-width: 1024px){ .post-advantages-section { padding: 48px 0; } .post-advantages-container { width: 92%; } .post-advantages-grid, .post-advantages-grid-row2 { gap: 18px; } .advantage-card-image { height: 168px; } } @media (max-width: 768px) { .post-advantages-section, .et-db.et-db.et-db #et-boc .et-l .post-advantages-section{ padding: 40px 0; } .post-advantages-header, .et-db.et-db.et-db #et-boc .et-l .post-advantages-header{ margin-bottom: 28px; } .post-advantages-subtitle, .et-db.et-db.et-db #et-boc .et-l .post-advantages-subtitle{ font-size: 16px; } .post-advantages-grid, .post-advantages-grid-row2, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid-row2{ grid-template-columns: repeat(2, 1fr); gap: 16px; } .post-advantages-grid-row2, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid-row2{ margin-top: 16px; } .advantage-card-image, .et-db.et-db.et-db #et-boc .et-l .advantage-card-image{ height: 160px; } .advantage-card-content, .et-db.et-db.et-db #et-boc .et-l .advantage-card-content{ padding: 18px; } .advantage-card-title, .et-db.et-db.et-db #et-boc .et-l .advantage-card-title{ font-size: 18px; }} @media (max-width: 560px) { .post-advantages-grid, .post-advantages-grid-row2, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid, .et-db.et-db.et-db #et-boc .et-l .post-advantages-grid-row2{ grid-template-columns: 1fr; } .advantage-card-image, .et-db.et-db.et-db #et-boc .et-l .advantage-card-image{ height: 200px; }}
    QUYỀN LỢI ĐẶC BIỆT

    Đặc quyền của học viên E-Learning

    Trải nghiệm học tập hoàn hảo với đầy đủ quyền lợi và hỗ trợ tận tâm

    Hệ thống nội dung trọn đời

    Hệ thống nội dung trọn đời

    Truy cập hơn 100 bài học video kết hợp lý thuyết & project thực tiễn. Tất cả học phần mới được cập nhật miễn phí trọn đời.

    Học linh hoạt

    Update nội dung theo xu hướng

    Học mọi lúc, mọi nơi qua nền tảng E-learning. Tham gia các buổi workshop định kỳ để đào sâu kiến thức và bắt trend mới.

    Cộng đồng Premium

    Cộng đồng & tài nguyên Premium

    Kết nối với hơn 1000+ học viên đa lĩnh vực. Tham gia nhóm kiến thức Premium, cập nhật tài nguyên & insight mới mỗi ngày. Trao đổi thắc mắc trực tiếp với trainer và đội ngũ chuyên môn tại đây.

    (function () { var section = document.querySelector('.post-advantages-section'); if (!section) return; var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce || !('IntersectionObserver' in window)) return; section.classList.add('pa-js'); var els = [].slice.call(section.querySelectorAll('.post-advantages-header, .advantage-card')); var io = new IntersectionObserver(function (entries) { entries.forEach(function (en) { if (en.isIntersecting) { en.target.classList.add('pa-in'); io.unobserve(en.target); } }); }, { threshold: 0.1, rootMargin: '0px 0px -70px 0px' }); els.forEach(function (el) { io.observe(el); }); })();
    .trainer-section, .et-db.et-db.et-db #et-boc .et-l .trainer-section{ --primary: #0EA5E9; --primary-dark: #0284C7; --secondary: #3B82F6; --dark: #0F172A; --dark-800: #1E293B; --gray: #64748B; --gray-light: #F1F5F9; --white: #FFFFFF; --shadow-md: 0 4px 20px rgba(2, 132, 199, 0.06); --shadow-lg: 0 16px 44px rgba(2, 132, 199, 0.10); } .trainer-section, .et-db.et-db.et-db #et-boc .et-l .trainer-section{ padding: 100px 0; background: linear-gradient(135deg, #F0F9FF 0%, #FFFFFF 50%, #E0F2FE 100%); position: relative; overflow: hidden; font-family: 'League Spartan', sans-serif; } .trainer-section *, .et-db.et-db.et-db #et-boc .et-l .trainer-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } /* Decorative Background Elements - BLUE */ .trainer-section::before, .et-db.et-db.et-db #et-boc .et-l /* Decorative Background Elements - BLUE */ .trainer-section::before{ content: ''; position: absolute; top: -100px; right: -100px; width: 400px; height: 400px; background: radial-gradient(circle, rgba(14, 165, 233, 0.1) 0%, transparent 70%); border-radius: 50%; pointer-events: none; } .trainer-section::after, .et-db.et-db.et-db #et-boc .et-l .trainer-section::after{ content: ''; position: absolute; bottom: -150px; left: -150px; width: 500px; height: 500px; background: radial-gradient(circle, rgba(59, 130, 246, 0.08) 0%, transparent 70%); border-radius: 50%; pointer-events: none; } .trainer-container, .et-db.et-db.et-db #et-boc .et-l .trainer-container{ width: 85%; margin: 0 auto; padding: 0; position: relative; z-index: 2; } .trainer-header, .et-db.et-db.et-db #et-boc .et-l .trainer-header{ text-align: center; max-width: 800px; margin: 0 auto 60px; } .trainer-badge{ display: inline-block; background: linear-gradient(135deg, #0EA5E9 0%, #3B82F6 100%); padding: 10px 20px; border-radius: 25px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; color: white; margin-bottom: 20px; box-shadow: 0 4px 15px rgba(14, 165, 233, 0.3); }.et-db.et-db.et-db #et-boc .et-l .trainer-badge{ display: inline-block; background: linear-gradient(135deg, #0EA5E9 0%, #3B82F6 100%); padding: 10px 20px; border-radius: 25px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px; color: white !important; margin-bottom: 20px; box-shadow: 0 4px 15px rgba(14, 165, 233, 0.3); } .trainer-header h2, .et-db.et-db.et-db #et-boc .et-l .trainer-header h2{ font-size: 52px !important; font-weight: 900; margin-bottom: 16px; background: linear-gradient(135deg, #0F172A 0%, #0EA5E9 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; line-height: 1.2; } .trainer-content, .et-db.et-db.et-db #et-boc .et-l .trainer-content{ display: grid; grid-template-columns: 320px 1fr; gap: 48px; align-items: center; background: white; padding: 40px; border-radius: 24px; box-shadow: var(--shadow-lg); position: relative; } .trainer-left, .et-db.et-db.et-db #et-boc .et-l .trainer-left{ display: flex; flex-direction: column; align-items: center; gap: 24px; } .trainer-image{ width: 100%; aspect-ratio: 1; border-radius: 20px; background: linear-gradient(135deg, #0EA5E9 0%, #3B82F6 100%); display: flex; align-items: center; justify-content: center; font-size: 120px; color: white; overflow: hidden; box-shadow: 0 14px 36px rgba(14, 165, 233, 0.18); position: relative; border: 4px solid white; }.et-db.et-db.et-db #et-boc .et-l .trainer-image{ width: 100%; aspect-ratio: 1; border-radius: 20px; background: linear-gradient(135deg, #0EA5E9 0%, #3B82F6 100%); display: flex; align-items: center; justify-content: center; font-size: 120px; color: white !important; overflow: hidden; box-shadow: 0 14px 36px rgba(14, 165, 233, 0.18); position: relative; border: 4px solid white; } .trainer-image::after, .et-db.et-db.et-db #et-boc .et-l .trainer-image::after{ content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 0%, rgba(255, 255, 255, 0.1) 100%); pointer-events: none; } .trainer-image img, .et-db.et-db.et-db #et-boc .et-l .trainer-image img{ width: 100%; height: 100%; object-fit: cover; } /* Stats Cards - BLUE */ .trainer-stats, .et-db.et-db.et-db #et-boc .et-l /* Stats Cards - BLUE */ .trainer-stats{ display: grid; grid-template-columns: 1fr 1fr; gap: 12px; width: 100%; } .stat-card, .et-db.et-db.et-db #et-boc .et-l .stat-card{ background: linear-gradient(135deg, #F0F9FF 0%, #E0F2FE 100%); padding: 16px; border-radius: 16px; text-align: center; border: 1px solid #E0F2FE; } .stat-number{ font-size: 28px; font-weight: 800; color: #0284C7; line-height: 1; margin-bottom: 4px; }.et-db.et-db.et-db #et-boc .et-l .stat-number{ font-size: 28px; font-weight: 800; color: #0284C7 !important; line-height: 1; margin-bottom: 4px; } .stat-label{ font-size: 12px; font-weight: 600; color: #0369A1; text-transform: uppercase; letter-spacing: 0.5px; }.et-db.et-db.et-db #et-boc .et-l .stat-label{ font-size: 12px; font-weight: 600; color: #0369A1 !important; text-transform: uppercase; letter-spacing: 0.5px; } .trainer-info h3{ font-size: 36px; font-weight: 900; margin-bottom: 16px; color: var(--dark); line-height: 1.2; }.et-db.et-db.et-db #et-boc .et-l .trainer-info h3{ font-size: 36px; font-weight: 900; margin-bottom: 16px; color: var(--dark) !important; line-height: 1.2; } .trainer-titles, .et-db.et-db.et-db #et-boc .et-l .trainer-titles{ margin-bottom: 20px; padding-left: 0; } .trainer-title{ font-size: 16px; color: var(--gray); font-weight: 600; margin-bottom: 8px; line-height: 1.6; position: relative; }.et-db.et-db.et-db #et-boc .et-l .trainer-title{ font-size: 16px; color: var(--gray) !important; font-weight: 600; margin-bottom: 8px; line-height: 1.6; position: relative; } .trainer-title:first-child{ font-size: 19px; font-weight: 700; color: #0EA5E9; }.et-db.et-db.et-db #et-boc .et-l .trainer-title:first-child{ font-size: 19px; font-weight: 700; color: #0EA5E9 !important; } .trainer-info .description{ color: var(--gray); line-height: 1.75; font-size: 16px; margin-bottom: 24px; background: #F8FAFC; padding: 18px 20px; border-radius: 14px; border-left: 4px solid #0EA5E9; }.et-db.et-db.et-db #et-boc .et-l .trainer-info .description{ color: var(--gray) !important; line-height: 1.75; font-size: 16px; margin-bottom: 24px; background: #F8FAFC; padding: 18px 20px; border-radius: 14px; border-left: 4px solid #0EA5E9; } /* Social Links with Brand Colors */ .social-links-wrapper, .et-db.et-db.et-db #et-boc .et-l /* Social Links with Brand Colors */ .social-links-wrapper{ background: linear-gradient(135deg, #F8FAFC 0%, #F1F5F9 100%); padding: 24px; border-radius: 20px; border: 1px solid #EEF2F6; } .social-links-title{ font-size: 14px; font-weight: 700; color: var(--dark); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 16px; text-align: center; }.et-db.et-db.et-db #et-boc .et-l .social-links-title{ font-size: 14px; font-weight: 700; color: var(--dark) !important; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 16px; text-align: center; } .social-links, .et-db.et-db.et-db #et-boc .et-l .social-links{ display: flex; gap: 12px; justify-content: center; flex-wrap: nowrap; } .social-link{ display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 14px; text-decoration: none; color: white; transition: all 0.3s ease; position: relative; overflow: hidden; }.et-db.et-db.et-db #et-boc .et-l .social-link{ display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 14px; text-decoration: none; color: white !important; transition: all 0.3s ease; position: relative; overflow: hidden; } .social-link::before, .et-db.et-db.et-db #et-boc .et-l .social-link::before{ content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, transparent 100%); opacity: 0; transition: opacity 0.3s ease; } .social-link:hover::before, .et-db.et-db.et-db #et-boc .et-l .social-link:hover::before{ opacity: 1; } .social-link:hover, .et-db.et-db.et-db #et-boc .et-l .social-link:hover{ transform: translateY(-3px); box-shadow: 0 10px 24px rgba(2, 132, 199, 0.18); } .social-link svg, .et-db.et-db.et-db #et-boc .et-l .social-link svg{ width: 24px; height: 24px; fill: white; position: relative; z-index: 1; } /* Brand Colors - GIỮ NGUYÊN */ .social-link.facebook, .et-db.et-db.et-db #et-boc .et-l /* Brand Colors - GIỮ NGUYÊN */ .social-link.facebook{ background: linear-gradient(135deg, #1877F2 0%, #0C63D4 100%); box-shadow: 0 4px 15px rgba(24, 119, 242, 0.4); } .social-link.linkedin, .et-db.et-db.et-db #et-boc .et-l .social-link.linkedin{ background: linear-gradient(135deg, #0A66C2 0%, #004182 100%); box-shadow: 0 4px 15px rgba(10, 102, 194, 0.4); } .social-link.youtube, .et-db.et-db.et-db #et-boc .et-l .social-link.youtube{ background: linear-gradient(135deg, #FF0000 0%, #CC0000 100%); box-shadow: 0 4px 15px rgba(255, 0, 0, 0.4); } .social-link.instagram, .et-db.et-db.et-db #et-boc .et-l .social-link.instagram{ background: linear-gradient(135deg, #E4405F 0%, #C13584 50%, #833AB4 100%); box-shadow: 0 4px 15px rgba(228, 64, 95, 0.4); } .social-link.tiktok, .et-db.et-db.et-db #et-boc .et-l .social-link.tiktok{ background: linear-gradient(135deg, #000000 0%, #25F4EE 100%); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4); } /* Responsive Design */ @media (max-width: 1000px), .et-db.et-db.et-db #et-boc .et-l /* Responsive Design */ @media (max-width: 1000px){ .trainer-section { padding: 60px 0; } .trainer-section::before, .trainer-section::after { display: none; } .trainer-container { width: 90%; padding: 0; } .trainer-header h2 { font-size: 36px; } .trainer-content { grid-template-columns: 1fr; text-align: center; gap: 40px; padding: 32px 24px; } .trainer-image { width: 220px; height: 220px; font-size: 80px; margin: 0 auto; } .trainer-stats { max-width: 280px; margin: 0 auto; } .stat-number { font-size: 24px; } .stat-label { font-size: 11px; } .trainer-info h3 { font-size: 28px; } .trainer-titles { margin-bottom: 24px; padding-left: 0; } .trainer-title { font-size: 14px; } .trainer-title:first-child { font-size: 16px; } .trainer-info .description { font-size: 15px; padding: 16px; } .social-links-wrapper { padding: 20px; } .social-links { gap: 10px; } .social-link { width: 48px; height: 48px; } .social-link svg { width: 22px; height: 22px; } } @media (max-width: 480px) { .trainer-container, .et-db.et-db.et-db #et-boc .et-l .trainer-container{ width: 90%; } .trainer-header h2, .et-db.et-db.et-db #et-boc .et-l .trainer-header h2{ font-size: 32px !important; } .trainer-info h3, .et-db.et-db.et-db #et-boc .et-l .trainer-info h3{ font-size: 24px; } .trainer-image, .et-db.et-db.et-db #et-boc .et-l .trainer-image{ width: 200px; height: 200px; font-size: 70px; } .trainer-title, .et-db.et-db.et-db #et-boc .et-l .trainer-title{ font-size: 13px; } .trainer-title:first-child, .et-db.et-db.et-db #et-boc .et-l .trainer-title:first-child{ font-size: 15px; } .social-links, .et-db.et-db.et-db #et-boc .et-l .social-links{ gap: 8px; } .social-link, .et-db.et-db.et-db #et-boc .et-l .social-link{ width: 44px; height: 44px; } .social-link svg, .et-db.et-db.et-db #et-boc .et-l .social-link svg{ width: 20px; height: 20px; }}
    Người đồng hành cùng bạn

    Trainer trong khóa học

    <!--==========================================🖼️ THAY ẢNH GIẢNG VIÊN Ở ĐÂY==========================================Recommended size: 280x280px (square) Format: JPG, PNG, WebP -->
    Hieu Nguyen Trung
    7+
    Năm kinh nghiệm
    2000+
    Học viên

    Hieu Nguyen Trung

    Founder & CEO at The Future Analyst
    ex-Senior Data Analyst at VNG
    ex-Process Improvement Consultant at Techcombank

    7 năm kinh nghiệm trong lĩnh vực Data Analytics ở ngân hàng & fintech. Đào tạo hơn 2000 học viên cá nhân & doanh nghiệp với các khóa học SQL, Python, Power BI & Tư duy phân tích. Diễn giả cho nhiều sự kiện Data Analytics tại FTU2, UEL, RMIT, UIT, VNG, Napas.

    .testimonials-section, .et-db.et-db.et-db #et-boc .et-l .testimonials-section{ --primary: #0EA5E9; --primary-dark: #0284C7; --secondary: #3B82F6; --dark: #0F172A; --dark-800: #1E293B; --gray: #64748B; --gray-light: #F1F5F9; --white: #FFFFFF; --accent: #F59E0B; --shadow-md: 0 4px 20px rgba(0,0,0,0.08); --shadow-lg: 0 10px 40px rgba(0,0,0,0.12); } .testimonials-section, .et-db.et-db.et-db #et-boc .et-l .testimonials-section{ padding: 100px 0 !important; background: linear-gradient(180deg, #0369A1 0%, #0284C7 50%, #0369A1 100%) !important; position: relative; overflow: hidden; font-family: 'League Spartan', sans-serif; } .testimonials-section *, .et-db.et-db.et-db #et-boc .et-l .testimonials-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } /* Decorative background pattern */ .testimonials-section::before, .et-db.et-db.et-db #et-boc .et-l /* Decorative background pattern */ .testimonials-section::before{ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23FFFFFF' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); opacity: 1; } .testimonials-container, .et-db.et-db.et-db #et-boc .et-l .testimonials-container{ width: 85%; margin: 0 auto; padding: 0; position: relative; z-index: 1; } .testimonials-header, .et-db.et-db.et-db #et-boc .et-l .testimonials-header{ text-align: center; max-width: 800px; margin: 0 auto 60px; } .testimonials-badge, .et-db.et-db.et-db #et-boc .et-l .testimonials-badge{ display: inline-block; background: rgba(255, 255, 255, 0.15) !important; backdrop-filter: blur(10px); padding: 8px 16px; border-radius: 20px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--white) !important; margin-bottom: 16px; border: 1px solid rgba(255, 255, 255, 0.2); } .testimonials-header h2, .et-db.et-db.et-db #et-boc .et-l .testimonials-header h2{ font-family: 'League Spartan', sans-serif; font-size: 48px!important; font-weight: 800; margin-bottom: 16px; color: var(--white) !important; line-height: 1.2; } .testimonials-header .subtitle, .et-db.et-db.et-db #et-boc .et-l .testimonials-header .subtitle{ font-size: 18px; color: rgba(255, 255, 255, 0.9) !important; line-height: 1.7; } .testimonials-slider-wrapper, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-wrapper{ position: relative; overflow: hidden; padding: 20px 0; margin-top: 60px; } .testimonials-slider-wrapper:not(:last-child), .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-wrapper:not(:last-child){ margin-bottom: 20px; } .testimonials-slider-track, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-track{ display: flex; gap: 24px; } .testimonials-slider-track.slide-left, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-track.slide-left{ animation: slideTestimonialsLeft 40s linear infinite; } .testimonials-slider-track.slide-right, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-track.slide-right{ animation: slideTestimonialsRight 40s linear infinite; } .testimonials-slider-wrapper:hover .testimonials-slider-track, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-wrapper:hover .testimonials-slider-track{ animation-play-state: paused; } @keyframes slideTestimonialsLeft { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } @keyframes slideTestimonialsRight { 0% { transform: translateX(-50%); } 100% { transform: translateX(0); } } .testimonial-card, .et-db.et-db.et-db #et-boc .et-l .testimonial-card{ flex: 0 0 auto; width: 400px; background: #FFFFFF !important; border: 2px solid rgba(255, 255, 255, 0.3) !important; padding: 40px !important; border-radius: 24px !important; transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); position: relative; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15) !important; } .testimonial-card::before, .et-db.et-db.et-db #et-boc .et-l .testimonial-card::before{ content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, rgba(14,165,233,0.08) 0%, rgba(59,130,246,0.08) 100%); opacity: 0; transition: opacity 0.4s ease; border-radius: 24px; z-index: 0; } .testimonial-card:hover, .et-db.et-db.et-db #et-boc .et-l .testimonial-card:hover{ transform: translateY(-12px) scale(1.03) !important; border-color: #BAE6FD !important; box-shadow: 0 15px 40px rgba(0, 0, 0, 0.25) !important; z-index: 10; } .testimonial-card:hover::before, .et-db.et-db.et-db #et-boc .et-l .testimonial-card:hover::before{ opacity: 1; } .stars, .et-db.et-db.et-db #et-boc .et-l .stars{ color: var(--accent) !important; font-size: 20px; margin-bottom: 20px; position: relative; z-index: 2; } .testimonial-text, .et-db.et-db.et-db #et-boc .et-l .testimonial-text{ font-size: 16px; line-height: 1.7; margin-bottom: 24px; font-style: italic; color: var(--dark-800) !important; position: relative; z-index: 2; } .testimonial-author, .et-db.et-db.et-db #et-boc .et-l .testimonial-author{ font-weight: 700; margin-bottom: 4px; color: var(--dark) !important; position: relative; z-index: 2; } .testimonial-role, .et-db.et-db.et-db #et-boc .et-l .testimonial-role{ font-size: 14px; color: var(--gray) !important; position: relative; z-index: 2; } /* Responsive Design */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* Responsive Design */ @media (max-width: 1024px){ .testimonials-container { width: 90%; } } @media (max-width: 768px) { .testimonials-section, .et-db.et-db.et-db #et-boc .et-l .testimonials-section{ padding: 60px 0 !important; } .testimonials-container, .et-db.et-db.et-db #et-boc .et-l .testimonials-container{ width: 90%; padding: 0; } .testimonials-header h2, .et-db.et-db.et-db #et-boc .et-l .testimonials-header h2{ font-size: 32px; } .testimonials-header .subtitle, .et-db.et-db.et-db #et-boc .et-l .testimonials-header .subtitle{ font-size: 16px; } .testimonial-card, .et-db.et-db.et-db #et-boc .et-l .testimonial-card{ width: 320px; padding: 32px 24px !important; } .testimonials-slider-wrapper, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-wrapper{ padding: 15px 0; } .testimonials-slider-wrapper:not(:last-child), .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-wrapper:not(:last-child){ margin-bottom: 15px; } .testimonials-slider-track, .et-db.et-db.et-db #et-boc .et-l .testimonials-slider-track{ gap: 16px; }} @media (max-width: 480px) { .testimonials-container, .et-db.et-db.et-db #et-boc .et-l .testimonials-container{ width: 90%; } .testimonials-header h2, .et-db.et-db.et-db #et-boc .et-l .testimonials-header h2{ font-size: 30px !important; } .testimonial-card, .et-db.et-db.et-db #et-boc .et-l .testimonial-card{ width: 280px; padding: 24px !important; } .testimonial-text, .et-db.et-db.et-db #et-boc .et-l .testimonial-text{ font-size: 15px; }}
    CẢM NHẬN HỌC VIÊN

    1,200+ học viên đã thành thạo SQL

    Chia sẻ từ cộng đồng học viên SQL

    <!-- ========================================== ROW 1 - SLIDE LEFT 🔧 THAY ĐỔI NỘI DUNG TESTIMONIALS Ở ĐÂY ========================================== -->
    ★★★★★

    "Từ chỗ sợ SQL giờ mình tự tin viết query phức tạp. Khóa học này giúp mình hiểu bản chất và tư duy giải quyết bài toán với SQL."

    Trần Hương
    Marketing → Data Analyst
    ★★★★★

    "Lộ trình SQL từ cơ bản đến nâng cao rất chi tiết. Các bài tập thực hành giúp mình áp dụng ngay vào công việc."

    Minh Tuấn
    Junior Analyst
    ★★★★★

    "Window Functions và CTE giải thích rất dễ hiểu. Sau khóa học mình pass được SQL interview và nhận offer Data Analyst."

    Phương Anh
    Sinh viên → Junior Analyst
    ★★★★★

    "Các project SQL thực chiến rất hay. Cohort Analysis và Campaign Analysis giúp mình hiểu sâu về SQL trong business."

    Đức Anh
    Sales → Data Analyst
    ★★★★★

    "Nội dung SQL cập nhật, thực tế. Học xong mình tự tin xử lý data và tạo report với SQL một cách chuyên nghiệp."

    Mai Linh
    HR → People Analyst
    <!-- ========================================== ROW 2 - SLIDE RIGHT 🔧 THAY ĐỔI NỘI DUNG TESTIMONIALS Ở ĐÂY ========================================== -->
    ★★★★★

    "Từ người không biết SQL đến viết được query nâng cao chỉ trong 2 tháng. Khóa học SQL này thật sự đáng giá!"

    Quốc Bảo
    Admin → BI Analyst
    ★★★★★

    "JOIN và Subquery giải thích rất rõ ràng. Các bài tập SQL thực hành giúp mình impress được interviewer."

    Thu Thảo
    Designer → Product Analyst
    ★★★★★

    "Đầu tư tốt nhất cho kỹ năng SQL. Từ chỗ mơ hồ về query giờ đã tự tin xử lý data warehouse và viết SQL complex."

    Hải Nam
    Content Writer → Data Analyst
    ★★★★★

    "Problem Solving Strategy với SQL giúp mình tư duy tốt hơn. Học linh hoạt, có thể xem lại bất cứ lúc nào!"

    Lan Anh
    Teacher → Education Analyst
    // Testimonials Infinite Loop document.addEventListener('DOMContentLoaded', function() { // Row 1 - Clone cards for infinite loop const trackRow1 = document.getElementById('testimonialsRow1'); if (trackRow1) { const cardsRow1 = trackRow1.children; const cardsRow1Array = Array.from(cardsRow1); cardsRow1Array.forEach(card => { const clone = card.cloneNode(true); trackRow1.appendChild(clone); }); } // Row 2 - Clone cards for infinite loop const trackRow2 = document.getElementById('testimonialsRow2'); if (trackRow2) { const cardsRow2 = trackRow2.children; const cardsRow2Array = Array.from(cardsRow2); cardsRow2Array.forEach(card => { const clone = card.cloneNode(true); trackRow2.appendChild(clone); }); } });
    .faq-section, .et-db.et-db.et-db #et-boc .et-l .faq-section{ --primary: #0EA5E9; --primary-dark: #0284C7; --secondary: #3B82F6; --dark: #0F172A; --dark-800: #1E293B; --gray: #64748B; --gray-light: #F1F5F9; --white: #FFFFFF; --shadow-md: 0 4px 20px rgba(0,0,0,0.08); } .faq-section, .et-db.et-db.et-db #et-boc .et-l .faq-section{ padding: 100px 0; background: var(--white); font-family: 'League Spartan', sans-serif; } .faq-section *, .et-db.et-db.et-db #et-boc .et-l .faq-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .faq-container, .et-db.et-db.et-db #et-boc .et-l .faq-container{ max-width: 85%; margin: 0 auto; padding: 0 24px; } .faq-content-wrapper, .et-db.et-db.et-db #et-boc .et-l .faq-content-wrapper{ display: grid; grid-template-columns: 380px 1fr; gap: 60px; align-items: start; } .faq-header, .et-db.et-db.et-db #et-boc .et-l .faq-header{ position: sticky; top: 100px; } .faq-badge{ display: inline-block; background: linear-gradient(135deg, rgba(14,165,233,0.15) 0%, rgba(59,130,246,0.15) 100%); padding: 8px 16px; border-radius: 20px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #0284C7; margin-bottom: 16px; border: 1px solid rgba(14,165,233,0.3); }.et-db.et-db.et-db #et-boc .et-l .faq-badge{ display: inline-block; background: linear-gradient(135deg, rgba(14,165,233,0.15) 0%, rgba(59,130,246,0.15) 100%); padding: 8px 16px; border-radius: 20px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #0284C7 !important; margin-bottom: 16px; border: 1px solid rgba(14,165,233,0.3); } .faq-header h2{ font-family: 'League Spartan', sans-serif; font-size: 48px!important; font-weight: 800; margin-bottom: 16px; color: var(--dark); line-height: 1.2; }.et-db.et-db.et-db #et-boc .et-l .faq-header h2{ font-family: 'League Spartan', sans-serif; font-size: 48px!important; font-weight: 800; margin-bottom: 16px; color: var(--dark) !important; line-height: 1.2; } .faq-header p{ font-size: 17px; color: var(--gray); line-height: 1.7; margin: 0; }.et-db.et-db.et-db #et-boc .et-l .faq-header p{ font-size: 17px; color: var(--gray) !important; line-height: 1.7; margin: 0; } .faq-list, .et-db.et-db.et-db #et-boc .et-l .faq-list{ width: 100%; } .faq-item, .et-db.et-db.et-db #et-boc .et-l .faq-item{ background: var(--white); border: 2px solid var(--gray-light); border-radius: 16px; margin-bottom: 16px; overflow: hidden; transition: all 0.3s ease; } .faq-item:hover, .et-db.et-db.et-db #et-boc .et-l .faq-item:hover{ border-color: var(--primary); } .faq-item.active, .et-db.et-db.et-db #et-boc .et-l .faq-item.active{ border-color: var(--primary); box-shadow: var(--shadow-md); } .faq-question{ padding: 24px; font-weight: 600; font-size: 17px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; color: var(--dark); line-height: 1.5; }.et-db.et-db.et-db #et-boc .et-l .faq-question{ padding: 24px; font-weight: 600; font-size: 17px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; color: var(--dark) !important; line-height: 1.5; } .faq-question::after{ content: '+'; font-size: 28px; font-weight: 700; color: var(--primary); transition: transform 0.3s ease; flex-shrink: 0; }.et-db.et-db.et-db #et-boc .et-l .faq-question::after{ content: '+'; font-size: 28px; font-weight: 700; color: var(--primary) !important; transition: transform 0.3s ease; flex-shrink: 0; } .faq-item.active .faq-question::after, .et-db.et-db.et-db #et-boc .et-l .faq-item.active .faq-question::after{ transform: rotate(45deg); } .faq-answer{ padding: 0 24px 24px; color: var(--gray); line-height: 1.8; font-size: 15px; display: none; }.et-db.et-db.et-db #et-boc .et-l .faq-answer{ padding: 0 24px 24px; color: var(--gray) !important; line-height: 1.8; font-size: 15px; display: none; } .faq-answer ul, .et-db.et-db.et-db #et-boc .et-l .faq-answer ul{ list-style: none; padding: 0; margin: 0; } .faq-answer li, .et-db.et-db.et-db #et-boc .et-l .faq-answer li{ padding: 8px 0; padding-left: 24px; position: relative; line-height: 1.8; } .faq-answer li::before{ content: '•'; position: absolute; left: 0; color: var(--primary); font-weight: 700; font-size: 20px; }.et-db.et-db.et-db #et-boc .et-l .faq-answer li::before{ content: '•'; position: absolute; left: 0; color: var(--primary) !important; font-weight: 700; font-size: 20px; } .faq-answer a{ color: var(--primary); text-decoration: none; font-weight: 600; transition: all 0.3s ease; }.et-db.et-db.et-db #et-boc .et-l .faq-answer a{ color: var(--primary) !important; text-decoration: none; font-weight: 600; transition: all 0.3s ease; } .faq-answer a:hover{ color: var(--primary-dark); text-decoration: underline; }.et-db.et-db.et-db #et-boc .et-l .faq-answer a:hover{ color: var(--primary-dark) !important; text-decoration: underline; } .faq-item.active .faq-answer, .et-db.et-db.et-db #et-boc .et-l .faq-item.active .faq-answer{ display: block; animation: slideDown 0.3s ease; } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Responsive Design */ @media (max-width: 1024px), .et-db.et-db.et-db #et-boc .et-l /* Responsive Design */ @media (max-width: 1024px){ .faq-content-wrapper { grid-template-columns: 1fr; gap: 40px; } .faq-header { position: static; text-align: center; max-width: 800px; margin: 0 auto; } } @media (max-width: 768px) { .faq-section, .et-db.et-db.et-db #et-boc .et-l .faq-section{ padding: 60px 0; } .faq-container, .et-db.et-db.et-db #et-boc .et-l .faq-container{ padding: 0 16px; } .faq-header h2, .et-db.et-db.et-db #et-boc .et-l .faq-header h2{ font-size: 32px; } .faq-header p, .et-db.et-db.et-db #et-boc .et-l .faq-header p{ font-size: 16px; } .faq-question, .et-db.et-db.et-db #et-boc .et-l .faq-question{ padding: 20px; font-size: 16px; } .faq-answer, .et-db.et-db.et-db #et-boc .et-l .faq-answer{ padding: 0 20px 20px; font-size: 14px; } .faq-answer li, .et-db.et-db.et-db #et-boc .et-l .faq-answer li{ padding-left: 20px; }} @media (max-width: 480px) { .faq-header h2, .et-db.et-db.et-db #et-boc .et-l .faq-header h2{ font-size: 30px !important; } .faq-question, .et-db.et-db.et-db #et-boc .et-l .faq-question{ padding: 16px; font-size: 15px; } .faq-question::after, .et-db.et-db.et-db #et-boc .et-l .faq-question::after{ font-size: 24px; } .faq-answer, .et-db.et-db.et-db #et-boc .et-l .faq-answer{ padding: 0 16px 16px; font-size: 13px; }}
    CÂU HỎI THƯỜNG GẶP

    Chúng tôi giải đáp thắc mắc của bạn

    Tìm câu trả lời cho những câu hỏi phổ biến nhất về khóa học SQL

    Hình thức học của khóa SQL này là gì?
    • Đây là khóa học e-learning nên học viên sẽ được học qua video. Ngoài ra, khóa học sẽ theo dạng self-paced nên sẽ không có giới hạn về thời gian học nên học viên có thể dễ dàng sắp xếp thời gian học và ôn tập theo thời gian biểu cá nhân.
    • Bạn sẽ không học một mình mà luôn nhận được sự hỗ trợ từ team The Future Analyst khi được tham gia nhóm Q&A giải đáp thắc mắc về SQL. Bạn được quyền đặt các câu hỏi về các vấn đề: bài giảng SQL, công cụ, khó khăn bất cứ lúc nào.
    Hình thức đăng ký như thế nào?
    • Bạn đăng ký ngay tại trang web này, nhập đầy đủ các thông tin và tiến hành thanh toán thông qua hình thức quét QR chuyển khoản có hệ thống xác thực tự động trong vòng 3 phút!
    The Future Analyst có xuất hóa đơn VAT không?
    Sau khóa học SQL thì học viên có nhận được chứng nhận không?
    • Hiện tại bên mình đã có cấp chứng nhận cho học viên hoàn thành khoá học dựa trên project các bạn thực hành và thêm vào data portfolio. Các projects này sẽ giúp các bạn nắm chắc được kiến thức và ghi điểm hơn trong mắt nhà tuyển dụng!
    Khóa SQL này có đủ để trở thành Data Analyst không?
    • Hoàn toàn có thể. Lộ trình 6 khoá được thiết kế bám sát yêu cầu thực tế của vị trí DA, từ tư duy phân tích, Excel, Power BI, SQL, Python, đến ra quyết định dựa trên dữ liệu. Đây là những gì một DA thực sự làm mỗi ngày, không phải kiến thức học thuật thuần tuý. Sau khi hoàn thành, bạn có đủ công cụ và kỹ năng để tự tin apply vào các vị trí DA entry-level ngay lập tức.
    • Đặc biệt, Khoá AI Agent For Data Analytics & Decision Making, là khoá học đầu tiên dạy ứng dụng AI Agent cho phân tích dữ liệu, giúp bạn tận dụng tối đa sức mạnh của AI, tự động hoá phân tích, hỗ trợ ra quyết định kinh doanh thực tế, và sở hữu kỹ năng mà các DA truyền thống chưa có.
    Nếu chưa có kiến thức gì về SQL thì có thể tham gia khóa học không?
    • Hoàn toàn có thể! Khóa SQL For Data Analytics được thiết kế từ cơ bản đến nâng cao, bắt đầu từ những khái niệm nền tảng nhất về SQL Database.
    • SQL for DA: cung cấp cho bạn kiến thức về SQL từ các khái niệm cơ bản (SELECT, WHERE, JOIN), cách biến đổi làm sạch dữ liệu, đến các câu truy vấn nâng cao (Window Functions, CTE, Subquery) và cách áp dụng SQL trong các bài toán thực tế.
    • Tuy khóa học SQL có nhiều kiến thức và yêu cầu các bạn phải học, luyện tập nhiều, nhưng khóa học đều bắt đầu từ những kiến thức cơ bản nhất, vì vậy nếu bạn chưa có kiến thức về SQL vẫn hoàn toàn có thể theo học!
    Trường hợp có thắc mắc về SQL/bài tập trong khóa học thì em có thể hỏi ai ạ?
    • Trong cộng đồng https://community.mazhocdata.tv/ có space Q&A dành riêng cho học viên SQL. Nếu bạn có bất kỳ thắc mắc nào về SQL query, syntax, hoặc bài tập thì hãy đặt câu hỏi trực tiếp ở đó, sẽ có team và các bạn học viên cùng giải đáp!
    // FAQ Toggle document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.faq-question').forEach(question => { question.addEventListener('click', () => { const faqItem = question.parentElement; const isActive = faqItem.classList.contains('active'); // Close all FAQ items document.querySelectorAll('.faq-item').forEach(item => { item.classList.remove('active'); }); // Open clicked item if it wasn't active if (!isActive) { faqItem.classList.add('active'); } }); }); });
    .consultation-section, .et-db.et-db.et-db #et-boc .et-l .consultation-section{ --primary: #0EA5E9; --primary-dark: #0284C7; --secondary: #3B82F6; --dark: #0F172A; --dark-800: #1E293B; --gray: #64748B; --gray-light: #F1F5F9; --white: #FFFFFF; --shadow-md: 0 4px 20px rgba(0,0,0,0.08); --shadow-lg: 0 10px 40px rgba(0,0,0,0.12); } .consultation-section, .et-db.et-db.et-db #et-boc .et-l .consultation-section{ padding: 100px 0; background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%); font-family: 'League Spartan', sans-serif; position: relative; overflow: hidden; } .consultation-section *, .et-db.et-db.et-db #et-boc .et-l .consultation-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } .consultation-section::before, .et-db.et-db.et-db #et-boc .et-l .consultation-section::before{ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23FFFFFF' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); opacity: 0.5; } .consultation-container, .et-db.et-db.et-db #et-boc .et-l .consultation-container{ max-width: 85%; margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; } .consultation-header, .et-db.et-db.et-db #et-boc .et-l .consultation-header{ text-align: center; max-width: 700px; margin: 0 auto 50px; } .consultation-badge, .et-db.et-db.et-db #et-boc .et-l .consultation-badge{ display: inline-block; background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(10px); padding: 8px 16px; border-radius: 20px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--white) !important; margin-bottom: 16px; border: 1px solid rgba(255, 255, 255, 0.3); } .consultation-header h2, .et-db.et-db.et-db #et-boc .et-l .consultation-header h2{ font-family: 'League Spartan', sans-serif; font-size: 48px!important; font-weight: 800; margin-bottom: 16px; color: var(--white) !important; line-height: 1.2; } .consultation-header .subtitle, .et-db.et-db.et-db #et-boc .et-l .consultation-header .subtitle{ font-size: 18px; color: rgba(255, 255, 255, 0.95) !important; line-height: 1.7; } .consultation-card, .et-db.et-db.et-db #et-boc .et-l .consultation-card{ background: var(--white) !important; padding: 50px; border-radius: 32px; box-shadow: var(--shadow-lg); } .consultation-grid, .et-db.et-db.et-db #et-boc .et-l .consultation-grid{ display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; } .consultation-field, .et-db.et-db.et-db #et-boc .et-l .consultation-field{ margin: 0; } .consultation-field.full-width, .et-db.et-db.et-db #et-boc .et-l .consultation-field.full-width{ grid-column: 1 / -1; } .consultation-label, .et-db.et-db.et-db #et-boc .et-l .consultation-label{ display: block; font-size: 14px; font-weight: 600; color: var(--dark) !important; margin-bottom: 8px; } .required-mark, .et-db.et-db.et-db #et-boc .et-l .required-mark{ color: #EF4444 !important; margin-left: 4px; } .consultation-input, .consultation-textarea, .consultation-select, .et-db.et-db.et-db #et-boc .et-l .consultation-input, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea, .et-db.et-db.et-db #et-boc .et-l .consultation-select{ width: 100% !important; padding: 14px 18px !important; border: 2px solid var(--gray-light) !important; border-radius: 12px !important; font-size: 15px !important; font-family: 'League Spartan', sans-serif !important; font-weight: 400 !important; transition: all 0.3s ease; background: var(--white) !important; color: var(--dark) !important; -webkit-text-fill-color: var(--dark) !important; opacity: 1 !important; box-sizing: border-box !important; display: block !important; } .consultation-textarea, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea{ min-height: 100px !important; max-width: 100% !important; resize: vertical !important; } .consultation-input:focus, .consultation-textarea:focus, .consultation-select:focus, .et-db.et-db.et-db #et-boc .et-l .consultation-input:focus, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea:focus, .et-db.et-db.et-db #et-boc .et-l .consultation-select:focus{ outline: none !important; border-color: var(--primary) !important; box-shadow: 0 0 0 4px rgba(14,165,233,0.1) !important; } .consultation-input::placeholder, .consultation-textarea::placeholder, .et-db.et-db.et-db #et-boc .et-l .consultation-input::placeholder, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea::placeholder{ color: var(--gray) !important; opacity: 0.7 !important; } .consultation-select, .et-db.et-db.et-db #et-boc .et-l .consultation-select{ cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%2364748B' d='M4 6l4 4 4-4z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 18px center; padding-right: 42px !important; } .consultation-select option, .et-db.et-db.et-db #et-boc .et-l .consultation-select option{ color: var(--dark) !important; background: var(--white) !important; } .consultation-submit-wrapper, .et-db.et-db.et-db #et-boc .et-l .consultation-submit-wrapper{ grid-column: 1 / -1; text-align: center; margin-top: 8px; } .consultation-submit, .et-db.et-db.et-db #et-boc .et-l .consultation-submit{ background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%) !important; color: var(--white) !important; padding: 16px 48px !important; border: none !important; border-radius: 12px !important; font-size: 16px !important; font-weight: 700 !important; font-family: 'League Spartan', sans-serif !important; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 20px rgba(14,165,233,0.3); } .consultation-submit:hover, .et-db.et-db.et-db #et-boc .et-l .consultation-submit:hover{ transform: translateY(-2px) !important; box-shadow: 0 6px 30px rgba(14,165,233,0.4) !important; } .consultation-submit:active, .et-db.et-db.et-db #et-boc .et-l .consultation-submit:active{ transform: translateY(0) !important; } .consultation-submit:disabled, .et-db.et-db.et-db #et-boc .et-l .consultation-submit:disabled{ opacity: 0.7 !important; cursor: not-allowed; transform: none !important; } .consultation-trust, .et-db.et-db.et-db #et-boc .et-l .consultation-trust{ text-align: center; margin-top: 20px; padding-top: 20px; border-top: 2px solid var(--gray-light); } .trust-text, .et-db.et-db.et-db #et-boc .et-l .trust-text{ font-size: 14px; color: var(--gray) !important; display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0; } /* Success Popup */ .success-popup-overlay, .et-db.et-db.et-db #et-boc .et-l /* Success Popup */ .success-popup-overlay{ display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.6); z-index: 999999; align-items: center; justify-content: center; backdrop-filter: blur(4px); animation: fadeIn 0.3s ease; } .success-popup-overlay.show, .et-db.et-db.et-db #et-boc .et-l .success-popup-overlay.show{ display: flex; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .success-popup, .et-db.et-db.et-db #et-boc .et-l .success-popup{ background: var(--white) !important; padding: 50px 40px; border-radius: 24px; max-width: 500px; width: 90%; text-align: center; box-shadow: var(--shadow-lg); animation: slideUp 0.4s ease; } @keyframes slideUp { from { transform: translateY(50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .popup-icon, .et-db.et-db.et-db #et-boc .et-l .popup-icon{ font-size: 80px; margin-bottom: 20px; animation: bounce 0.6s ease 0.2s; } @keyframes bounce { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } .popup-title, .et-db.et-db.et-db #et-boc .et-l .popup-title{ font-family: 'League Spartan', sans-serif; font-size: 32px; font-weight: 900; color: var(--dark) !important; margin: 0 0 16px 0; line-height: 1.2; } .popup-text, .et-db.et-db.et-db #et-boc .et-l .popup-text{ font-size: 17px; color: var(--gray) !important; line-height: 1.6; margin: 0 0 8px 0; } .popup-subtext, .et-db.et-db.et-db #et-boc .et-l .popup-subtext{ font-size: 16px; font-weight: 600; color: var(--primary) !important; margin: 0 0 32px 0; } .popup-close, .et-db.et-db.et-db #et-boc .et-l .popup-close{ background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%) !important; color: var(--white) !important; padding: 14px 40px !important; border: none !important; border-radius: 12px !important; font-size: 16px !important; font-weight: 700 !important; font-family: 'League Spartan', sans-serif !important; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 20px rgba(14,165,233,0.3); } .popup-close:hover, .et-db.et-db.et-db #et-boc .et-l .popup-close:hover{ transform: translateY(-2px) !important; box-shadow: 0 6px 30px rgba(14,165,233,0.4) !important; } /* Responsive */ @media (max-width: 768px), .et-db.et-db.et-db #et-boc .et-l /* Responsive */ @media (max-width: 768px){ .consultation-section { padding: 60px 0; } .consultation-container { padding: 0 16px; } .consultation-header h2 { font-size: 32px; } .consultation-header .subtitle { font-size: 16px; } .consultation-card { padding: 32px 24px; border-radius: 24px; } .consultation-grid { grid-template-columns: 1fr; gap: 18px; } .consultation-input, .consultation-textarea, .consultation-select { padding: 14px 18px !important; } .consultation-submit { width: 100% !important; padding: 16px 32px !important; } .success-popup { padding: 40px 30px; } .popup-title { font-size: 28px; } } @media (max-width: 480px) { .consultation-header h2, .et-db.et-db.et-db #et-boc .et-l .consultation-header h2{ font-size: 28px !important; } .consultation-header .subtitle, .et-db.et-db.et-db #et-boc .et-l .consultation-header .subtitle{ font-size: 15px; } .consultation-card, .et-db.et-db.et-db #et-boc .et-l .consultation-card{ padding: 24px 16px; } .consultation-label, .et-db.et-db.et-db #et-boc .et-l .consultation-label{ font-size: 13px; } .consultation-input, .consultation-textarea, .consultation-select, .et-db.et-db.et-db #et-boc .et-l .consultation-input, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea, .et-db.et-db.et-db #et-boc .et-l .consultation-select{ padding: 12px 16px !important; font-size: 14px !important; } .consultation-textarea, .et-db.et-db.et-db #et-boc .et-l .consultation-textarea{ min-height: 90px !important; } .consultation-submit, .et-db.et-db.et-db #et-boc .et-l .consultation-submit{ padding: 14px 28px !important; font-size: 15px !important; } .popup-icon, .et-db.et-db.et-db #et-boc .et-l .popup-icon{ font-size: 64px; } .popup-title, .et-db.et-db.et-db #et-boc .et-l .popup-title{ font-size: 26px; } .popup-text, .et-db.et-db.et-db #et-boc .et-l .popup-text{ font-size: 15px; } .popup-close, .et-db.et-db.et-db #et-boc .et-l .popup-close{ width: 100% !important; }}
    ✨ Tư vấn miễn phí

    Còn thắc mắc về SQL?
    Hãy để chúng tôi hỗ trợ bạn!

    Điền thông tin bên dưới, team tư vấn sẽ liên hệ ngay để giải đáp mọi câu hỏi của bạn về khóa học SQL

    <!-- ========================================== 🔗 THAY GOOGLE SCRIPT URL Ở ĐÂY ========================================== Line 686: const GOOGLE_SCRIPT_URL = 'YOUR_URL'; -->
    -- Chọn mục tiêu -- Chuyển ngành sang Data Analytics Thăng tiến trong công việc Nâng cao kỹ năng SQL hiện tại Tìm hiểu về SQL và Data Analytics Khác
    -- Chọn kênh -- Zalo Email

    🔒 Thông tin của bạn được bảo mật tuyệt đối

    (function() { 'use strict'; // ========================================== // 🔗 THAY GOOGLE SCRIPT URL Ở ĐÂY // ========================================== const GOOGLE_SCRIPT_URL = 'https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec'; const form = document.getElementById('consultationForm'); const popup = document.getElementById('successPopup'); if (!form) return; form.addEventListener('submit', async function(e) { e.preventDefault(); const submitBtn = form.querySelector('.consultation-submit'); const originalText = submitBtn.textContent; submitBtn.disabled = true; submitBtn.textContent = 'Đang gửi...'; const formData = new FormData(form); const data = { timestamp: new Date().toLocaleString('vi-VN', { timeZone: 'Asia/Ho_Chi_Minh', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }), fullname: formData.get('fullname'), email: formData.get('email'), phone: formData.get('phone'), facebook: formData.get('facebook') || 'Không cung cấp', occupation: formData.get('occupation') || 'Không cung cấp', goal: formData.get('goal'), course: formData.get('course') || 'SQL', contact_method: formData.get('contact_method'), message: formData.get('message') || 'Không có' }; try { await fetch(GOOGLE_SCRIPT_URL, { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(data) }); popup.classList.add('show'); form.reset(); submitBtn.disabled = false; submitBtn.textContent = originalText; setTimeout(() => { popup.classList.remove('show'); }, 5000); } catch (error) { console.error('Error:', error); popup.classList.add('show'); form.reset(); submitBtn.disabled = false; submitBtn.textContent = originalText; setTimeout(() => { popup.classList.remove('show'); }, 5000); } }); if (popup) { popup.addEventListener('click', function(e) { if (e.target === popup) { popup.classList.remove('show'); } }); const closeBtn = popup.querySelector('.popup-close'); if (closeBtn) { closeBtn.addEventListener('click', function() { popup.classList.remove('show'); }); } } })();
    .cta-section, .et-db.et-db.et-db #et-boc .et-l .cta-section{ --primary: #0EA5E9; --primary-dark: #0284C7; --secondary: #3B82F6; --white: #FFFFFF; --shadow-md: 0 4px 20px rgba(0,0,0,0.08); } .cta-section, .et-db.et-db.et-db #et-boc .et-l .cta-section{ padding: 30px 0 !important; background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%) !important; text-align: center !important; color: var(--white) !important; position: relative; overflow: hidden; font-family: 'League Spartan', sans-serif; } .cta-section *, .et-db.et-db.et-db #et-boc .et-l .cta-section *{ box-sizing: border-box !important; font-family: 'League Spartan', sans-serif !important; } /* Decorative circles */ .cta-section::before, .et-db.et-db.et-db #et-boc .et-l /* Decorative circles */ .cta-section::before{ content: ''; position: absolute; top: -100px; right: -100px; width: 300px; height: 300px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; } .cta-section::after, .et-db.et-db.et-db #et-boc .et-l .cta-section::after{ content: ''; position: absolute; bottom: -80px; left: -80px; width: 250px; height: 250px; background: rgba(255, 255, 255, 0.08); border-radius: 50%; } .cta-container, .et-db.et-db.et-db #et-boc .et-l .cta-container{ max-width: 900px; margin: 0 auto !important; padding: 0 24px !important; position: relative; z-index: 1; text-align: center !important; } .cta-section h2, .et-db.et-db.et-db #et-boc .et-l .cta-section h2{ font-family: 'League Spartan', sans-serif !important; font-size: 42px !important; font-weight: 800 !important; margin-bottom: 12px !important; margin-top: 0 !important; margin-left: auto !important; margin-right: auto !important; color: var(--white) !important; line-height: 1.2 !important; text-align: center !important; } .cta-section .description, .et-db.et-db.et-db #et-boc .et-l .cta-section .description{ font-size: 17px !important; margin: 0 auto 24px auto !important; padding: 0 !important; opacity: 0.95; line-height: 1.6 !important; max-width: 700px; color: var(--white) !important; text-align: center !important; } .cta-buttons, .et-db.et-db.et-db #et-boc .et-l .cta-buttons{ display: flex !important; gap: 16px !important; justify-content: center !important; align-items: center !important; flex-wrap: wrap !important; margin: 0 auto !important; padding: 0 !important; text-align: center !important; width: 100% !important; } .cta-section .btn-primary, .cta-section .btn-secondary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-primary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-secondary{ margin: 0 !important; float: none !important; } .cta-section .btn-primary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-primary{ background: var(--white) !important; color: var(--primary) !important; padding: 16px 32px !important; border-radius: 12px !important; font-weight: 700 !important; font-size: 16px !important; border: none !important; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 20px rgba(255, 255, 255, 0.3) !important; text-decoration: none !important; display: inline-block !important; text-align: center !important; white-space: nowrap; } .cta-section .btn-primary:hover, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-primary:hover{ transform: translateY(-3px) !important; box-shadow: 0 6px 30px rgba(255, 255, 255, 0.4) !important; } .cta-section .btn-secondary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-secondary{ background: transparent !important; color: var(--white) !important; padding: 16px 32px !important; border-radius: 12px !important; font-weight: 600 !important; font-size: 16px !important; border: 2px solid var(--white) !important; cursor: pointer; transition: all 0.3s ease; text-decoration: none !important; display: inline-block !important; text-align: center !important; white-space: nowrap; } .cta-section .btn-secondary:hover, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-secondary:hover{ background: var(--white) !important; color: var(--primary) !important; transform: translateY(-3px) !important; } /* Responsive Design */ @media (max-width: 768px), .et-db.et-db.et-db #et-boc .et-l /* Responsive Design */ @media (max-width: 768px){ .cta-section { padding: 30px 0 !important; } .cta-container { padding: 0 16px !important; } .cta-section h2 { font-size: 32px !important; margin-bottom: 10px !important; } .cta-section .description { font-size: 16px !important; margin-bottom: 20px !important; } .cta-buttons { flex-direction: column !important; gap: 12px !important; } .cta-section .btn-primary, .cta-section .btn-secondary { width: 100% !important; max-width: 100% !important; padding: 14px 24px !important; } } @media (max-width: 480px) { .cta-section, .et-db.et-db.et-db #et-boc .et-l .cta-section{ padding: 30px 0 !important; } .cta-section h2, .et-db.et-db.et-db #et-boc .et-l .cta-section h2{ font-size: 28px !important; line-height: 1.3 !important; margin-bottom: 8px !important; } .cta-section .description, .et-db.et-db.et-db #et-boc .et-l .cta-section .description{ font-size: 15px !important; margin-bottom: 16px !important; } .cta-section .btn-primary, .cta-section .btn-secondary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-primary, .et-db.et-db.et-db #et-boc .et-l .cta-section .btn-secondary{ padding: 13px 20px !important; font-size: 15px !important; }}

    Sẵn sàng thành thạo SQL và
    bắt đầu hành trình Data Analytics?

    Tham gia cùng 1,200+ học viên đang học SQL và phát triển sự nghiệp trong lĩnh vực Data

    <!-- ========================================== 🔗 THAY LINKS Ở ĐÂY ========================================== -->

    Leave a Comment