{"id":31562,"date":"2026-10-29T08:00:00","date_gmt":"2026-10-29T01:00:00","guid":{"rendered":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/?p=31562"},"modified":"2026-10-29T16:43:55","modified_gmt":"2026-10-29T09:43:55","slug":"cau-hoi-phong-van-sql","status":"publish","type":"post","link":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/phong-van-viec-lam\/cau-hoi-phong-van-sql","title":{"rendered":"C\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL: t\u1eeb JOIN, window function \u0111\u1ebfn v\u00f2ng live SQL"},"content":{"rendered":"<p>Nhi\u1ec1u \u1ee9ng vi\u00ean vi\u1ebft \u0111\u01b0\u1ee3c truy v\u1ea5n nh\u01b0ng v\u1eabn tr\u01b0\u1ee3t v\u00ec kh\u00f4ng gi\u1ea3i th\u00edch \u0111\u01b0\u1ee3c l\u1ef1a ch\u1ecdn c\u1ee7a m\u00ecnh. B\u00e0i vi\u1ebft gom c\u00e1c <strong>c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL<\/strong> theo nh\u00f3m n\u1ec1n t\u1ea3ng, n\u00e2ng cao, hi\u1ec7u n\u0103ng v\u00e0 thi\u1ebft k\u1ebf, k\u00e8m \u0111i\u1ec1u ng\u01b0\u1eddi ph\u1ecfng v\u1ea5n mu\u1ed1n ki\u1ec3m tra. Tr\u1ecdng t\u00e2m l\u00e0 v\u00f2ng live SQL tr\u00ean b\u1ea3ng \u0111\u01a1n h\u00e0ng \u2013 kh\u00e1ch h\u00e0ng, n\u01a1i c\u00e1ch ngh\u0129 \u0111\u01b0\u1ee3c ch\u1ea5m ngang c\u00e2u l\u1ec7nh.<\/p>\n<p style=\"text-align:center\"><img decoding=\"async\" src=\"https:\/\/cl-wpml.careerlink.vn\/cam-nang-viec-lam\/wp-content\/uploads\/2026\/10\/20154934\/a-cau-hoi-phong-van-sql-1.png\" alt=\"c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL\" style=\"max-width:100%;height:auto;\" \/><\/p>\n<div style=\"background:#e3f2fd;border-left:4px solid #1565c0;padding:15px 20px;margin:20px 0;border-radius:4px\">\n<p><strong>T\u1ed5ng quan nhanh<\/strong><\/p>\n<p>\u2013 Nh\u00f3m n\u1ec1n t\u1ea3ng xoay quanh JOIN, WHERE v\u1edbi HAVING, GROUP BY v\u00e0 NULL.<\/p>\n<p>\u2013 Nh\u00f3m n\u00e2ng cao ki\u1ec3m tra CTE, subquery v\u00e0 window function nh\u01b0 ROW_NUMBER, RANK.<\/p>\n<p>\u2013 Nh\u00f3m hi\u1ec7u n\u0103ng v\u00e0 thi\u1ebft k\u1ebf h\u1ecfi v\u1ec1 index, execution plan, chu\u1ea9n h\u00f3a, transaction.<\/p>\n<p>\u2013 V\u00f2ng live SQL th\u01b0\u1eddng c\u00f3 b\u00e0i t\u00ecm b\u1ea3n ghi tr\u00f9ng v\u00e0 b\u00e0i l\u1ea5y top N m\u1ed7i nh\u00f3m.<\/p>\n<p>B\u1ed1n nh\u00f3m n\u00e0y \u0111\u01b0\u1ee3c nh\u1ea5n kh\u00e1c nhau t\u00f9y v\u1ecb tr\u00ed \u1ee9ng tuy\u1ec3n.<\/p>\n<\/div>\n<p>Ph\u1ea7n d\u01b0\u1edbi \u0111i l\u1ea7n l\u01b0\u1ee3t t\u1eebng nh\u00f3m, k\u00e8m ghi ch\u00fa theo v\u1ecb tr\u00ed.<\/p>\n<h2>1. Nh\u00f3m c\u00e2u h\u1ecfi n\u1ec1n t\u1ea3ng: JOIN, WHERE \u2013 HAVING v\u00e0 NULL<\/h2>\n<p>Chuy\u00ean vi\u00ean ph\u00e2n t\u00edch d\u1eef li\u1ec7u (Data Analyst), L\u1eadp tr\u00ecnh vi\u00ean back-end (Back-end Developer) hay Qu\u1ea3n tr\u1ecb c\u01a1 s\u1edf d\u1eef li\u1ec7u (Database Administrator) th\u01b0\u1eddng g\u1eb7p nh\u00f3m c\u00e2u n\u00e0y \u0111\u1ea7u ti\u00ean. Ng\u01b0\u1eddi h\u1ecfi mu\u1ed1n nghe gi\u1ea3i th\u00edch b\u1eb1ng v\u00ed d\u1ee5 thay v\u00ec \u0111\u1ecbnh ngh\u0129a. N\u1ebfu c\u1ea7n \u00f4n kh\u00e1i ni\u1ec7m g\u1ed1c, b\u00e0i <a href=\"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/tu-van-nghe-nghiep\/sql-la-gi\" style=\"color:#1565c0;font-weight:600;text-decoration:underline\">SQL l\u00e0 g\u00ec? Nh\u1eefng \u0111i\u1ec1u c\u1ea7n bi\u1ebft v\u1ec1 c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/a> t\u00f3m t\u1eaft n\u1ec1n t\u1ea3ng c\u1ea7n n\u1eafm.<\/p>\n<h3>JOIN v\u00e0 hi\u1ec7n t\u01b0\u1ee3ng ph\u00ecnh d\u00f2ng<\/h3>\n<p>INNER JOIN ch\u1ec9 gi\u1eef d\u00f2ng kh\u1edbp \u1edf c\u1ea3 hai b\u1ea3ng, LEFT JOIN gi\u1eef to\u00e0n b\u1ed9 b\u1ea3ng tr\u00e1i v\u00e0 \u0111i\u1ec1n NULL khi b\u1ea3ng ph\u1ea3i kh\u00f4ng kh\u1edbp. \u0110i\u1ec3m c\u1ed9ng l\u00e0 t\u1ef1 nh\u1eafc r\u1ee7i ro JOIN quan h\u1ec7 m\u1ed9t \u2013 nhi\u1ec1u l\u00e0m doanh thu b\u1ecb c\u1ed9ng l\u1eb7p.<\/p>\n<h3>WHERE, HAVING v\u00e0 th\u1ee9 t\u1ef1 th\u1ef1c thi logic<\/h3>\n<p>WHERE l\u1ecdc t\u1eebng d\u00f2ng tr\u01b0\u1edbc khi gom nh\u00f3m, HAVING l\u1ecdc nh\u00f3m sau GROUP BY. H\u00e3y n\u00eau th\u1ee9 t\u1ef1 th\u1ef1c thi logic: FROM v\u00e0 JOIN, WHERE, GROUP BY, HAVING, SELECT, ORDER BY, cu\u1ed1i c\u00f9ng l\u00e0 LIMIT.<\/p>\n<h3>NULL, COUNT v\u00e0 UNION<\/h3>\n<p>NULL ngh\u0129a l\u00e0 kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb, n\u00ean ph\u1ea3i ki\u1ec3m tra b\u1eb1ng IS NULL thay v\u00ec d\u1ea5u b\u1eb1ng. C\u00e1c c\u00e2u \u0111i k\u00e8m hay g\u1eb7p g\u1ed3m:<\/p>\n<p>\u2013 COUNT(*) \u0111\u1ebfm m\u1ecdi d\u00f2ng, c\u00f2n COUNT(c\u1ed9t) b\u1ecf qua d\u00f2ng c\u00f3 NULL \u1edf c\u1ed9t \u0111\u00f3.<\/p>\n<p>\u2013 UNION lo\u1ea1i d\u00f2ng tr\u00f9ng n\u00ean t\u1ed1n th\u00eam x\u1eed l\u00fd, c\u00f2n UNION ALL gi\u1eef nguy\u00ean m\u1ecdi d\u00f2ng.<\/p>\n<p>\u2013 PRIMARY KEY kh\u00f4ng nh\u1eadn NULL, c\u00f2n UNIQUE t\u00f9y h\u1ec7 qu\u1ea3n tr\u1ecb v\u1eabn c\u00f3 th\u1ec3 ch\u1ea5p nh\u1eadn NULL (SQL Server ch\u1ec9 nh\u1eadn m\u1ed9t gi\u00e1 tr\u1ecb NULL, c\u00f2n PostgreSQL, MySQL v\u00e0 Oracle cho ph\u00e9p nhi\u1ec1u d\u00f2ng).<\/p>\n<p>K\u00e8m v\u00ed d\u1ee5 nh\u1ecf s\u1ebd thuy\u1ebft ph\u1ee5c h\u01a1n \u0111\u1ecdc thu\u1ed9c.<\/p>\n<h2>2. C\u00e2u h\u1ecfi truy v\u1ea5n n\u00e2ng cao: CTE, subquery v\u00e0 window function<\/h2>\n<p>T\u1eeb v\u00f2ng hai, v\u1edbi c\u00e2u &#8220;CTE kh\u00e1c subquery th\u1ebf n\u00e0o&#8221;, \u00fd tr\u1ea3 l\u1eddi l\u00e0 k\u1ebft qu\u1ea3 th\u01b0\u1eddng t\u01b0\u01a1ng \u0111\u01b0\u01a1ng, nh\u01b0ng CTE (m\u1ec7nh \u0111\u1ec1 WITH) \u0111\u1eb7t t\u00ean cho t\u1eebng b\u01b0\u1edbc n\u00ean d\u1ec5 \u0111\u1ecdc, d\u1ec5 s\u1eeda v\u00e0 h\u1ed7 tr\u1ee3 truy v\u1ea5n \u0111\u1ec7 quy. Subquery h\u1ee3p khi \u0111i\u1ec1u ki\u1ec7n ng\u1eafn, d\u00f9ng m\u1ed9t l\u1ea7n.<\/p>\n<p>ROW_NUMBER, RANK v\u00e0 DENSE_RANK kh\u00e1c nhau \u1edf c\u00e1ch x\u1eed l\u00fd gi\u00e1 tr\u1ecb b\u1eb1ng nhau. V\u1edbi d\u00e3y 30, 25, 25, 20, ROW_NUMBER tr\u1ea3 1, 2, 3, 4; RANK tr\u1ea3 1, 2, 2, 4; DENSE_RANK tr\u1ea3 1, 2, 2, 3. C\u00e2u kinh \u0111i\u1ec3n &#8220;t\u00ecm nh\u00e2n vi\u00ean c\u00f3 m\u1ee9c l\u01b0\u01a1ng l\u1edbn th\u1ee9 hai&#8221; v\u00ec th\u1ebf gi\u1ea3i \u0111\u01b0\u1ee3c b\u1eb1ng DENSE_RANK b\u1eb1ng 2. LAG hay d\u00f9ng \u0111\u1ec3 so doanh thu v\u1edbi th\u00e1ng tr\u01b0\u1edbc.<\/p>\n<p>N\u00ean \u00f4n \u0111\u00fang c\u00fa ph\u00e1p h\u1ec7 qu\u1ea3n tr\u1ecb trong tin tuy\u1ec3n d\u1ee5ng: l\u1ea5y N d\u00f2ng \u0111\u1ea7u d\u00f9ng LIMIT trong MySQL v\u00e0 PostgreSQL, TOP trong SQL Server, c\u00f2n Oracle t\u1eeb b\u1ea3n 12c d\u00f9ng FETCH FIRST n ROWS ONLY.<\/p>\n<h2>3. V\u00f2ng live SQL tr\u00ean b\u1ea3ng \u0111\u01a1n h\u00e0ng \u2013 kh\u00e1ch h\u00e0ng<\/h2>\n<p>Ph\u1ea7n th\u1ef1c h\u00e0nh trong b\u1ed9 c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL th\u01b0\u1eddng cho hai b\u1ea3ng kh\u00e1ch h\u00e0ng v\u00e0 \u0111\u01a1n h\u00e0ng \u0111\u1ec3 vi\u1ebft truy v\u1ea5n tr\u1ef1c ti\u1ebfp. Nh\u00ecn c\u00e1c tin trong m\u1ee5c <a href=\"https:\/\/www.careerlink.vn\/viec-lam\/cntt-phan-mem\/19\" style=\"color:#1565c0;font-weight:600;text-decoration:underline\">vi\u1ec7c l\u00e0m CNTT &#8211; ph\u1ea7n m\u1ec1m<\/a> tr\u00ean CareerLink, SQL n\u1eb1m trong y\u00eau c\u1ea7u c\u1ee7a nhi\u1ec1u v\u1ecb tr\u00ed d\u1eef li\u1ec7u l\u1eabn l\u1eadp tr\u00ecnh. Ng\u01b0\u1eddi ch\u1ea5m theo d\u00f5i tr\u00ecnh t\u1ef1 suy ngh\u0129 c\u1ee7a b\u1ea1n.<\/p>\n<h3>B\u00e0i t\u00ecm b\u1ea3n ghi tr\u00f9ng l\u1eb7p<\/h3>\n<p>\u0110\u1ec1 th\u01b0\u1eddng l\u00e0 &#8220;t\u00ecm kh\u00e1ch h\u00e0ng b\u1ecb nh\u1eadp tr\u00f9ng email&#8221;. H\u00e3y n\u00f3i th\u00e0nh ti\u1ebfng: gom nh\u00f3m theo email, \u0111\u1ebfm s\u1ed1 d\u00f2ng, gi\u1eef nh\u00f3m l\u1edbn h\u01a1n 1 b\u1eb1ng HAVING. Mu\u1ed1n gi\u1eef b\u1ea3n m\u1edbi nh\u1ea5t th\u00ec d\u00f9ng ROW_NUMBER ph\u00e2n v\u00f9ng theo email, s\u1eafp ng\u00e0y t\u1ea1o gi\u1ea3m d\u1ea7n.<\/p>\n<h3>B\u00e0i l\u1ea5y top N m\u1ed7i nh\u00f3m<\/h3>\n<p>V\u1edbi \u0111\u1ec1 &#8220;l\u1ea5y 3 \u0111\u01a1n gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t m\u1ed7i kh\u00e1ch&#8221;, h\u00e3y tr\u00ecnh b\u00e0y l\u1ecdc g\u00ec tr\u01b0\u1edbc, gom g\u00ec sau: b\u1ecf \u0111\u01a1n h\u1ee7y, \u0111\u00e1nh s\u1ed1 trong t\u1eebng kh\u00e1ch b\u1eb1ng ROW_NUMBER, r\u1ed3i gi\u1eef s\u1ed1 th\u1ee9 t\u1ef1 kh\u00f4ng qu\u00e1 3 \u1edf truy v\u1ea5n ngo\u00e0i.<\/p>\n<blockquote>\n<p><em>C\u00e2u l\u1ec7nh \u0111\u00fang cho th\u1ea5y b\u1ea1n bi\u1ebft vi\u1ebft SQL; c\u00e2u h\u1ecfi &#8220;con s\u1ed1 n\u00e0y c\u00f3 h\u1ee3p l\u00fd kh\u00f4ng&#8221; cho th\u1ea5y b\u1ea1n hi\u1ec3u d\u1eef li\u1ec7u.<\/em><\/p>\n<\/blockquote>\n<div style=\"background:#fff3e0;border-left:4px solid #ff9800;padding:15px 20px;margin:20px 0;border-radius:4px\">\n<p><strong>L\u01b0u \u00fd ki\u1ec3m tra sanity c\u1ee7a k\u1ebft qu\u1ea3<\/strong><\/p>\n<p>\u2013 B\u1ea1n n\u00ean so s\u1ed1 d\u00f2ng tr\u01b0\u1edbc v\u00e0 sau JOIN \u0111\u1ec3 ph\u00e1t hi\u1ec7n d\u1eef li\u1ec7u b\u1ecb ph\u00ecnh.<\/p>\n<p>\u2013 B\u1ea1n c\u1ea7n ki\u1ec3m tra c\u1ed9t c\u00f3 NULL tr\u01b0\u1edbc khi d\u00f9ng AVG ho\u1eb7c ph\u00e9p chia t\u1ef7 l\u1ec7.<\/p>\n<p>\u2013 B\u1ea1n h\u00e3y \u0111\u1ed1i chi\u1ebfu tay v\u00e0i kh\u00e1ch h\u00e0ng c\u1ee5 th\u1ec3 v\u1edbi k\u1ebft qu\u1ea3 t\u1ed5ng h\u1ee3p.<\/p>\n<p>Ba thao t\u00e1c n\u00e0y gi\u00fap b\u1ea1n tr\u1ea3 l\u1eddi \u0111\u01b0\u1ee3c c\u00e2u h\u1ecfi ng\u01b0\u1ee3c.<\/p>\n<\/div>\n<p>V\u1edbi Data Analyst, c\u00e2u h\u1ecfi ng\u01b0\u1ee3c ki\u1ec3u &#8220;doanh thu trung b\u00ecnh m\u1ed7i kh\u00e1ch t\u0103ng g\u1ea5p \u0111\u00f4i, b\u1ea1n c\u00f3 tin kh\u00f4ng&#8221; kh\u00e1 ph\u1ed5 bi\u1ebfn. Ph\u1ea3n x\u1ea1 ki\u1ec3m tra l\u1ea1i JOIN v\u00e0 NULL tr\u01b0\u1edbc khi k\u1ebft lu\u1eadn l\u00e0 \u0111i\u1ec3m c\u1ed9ng l\u1edbn.<\/p>\n<h2>4. C\u00e2u h\u1ecfi hi\u1ec7u n\u0103ng v\u00e0 thi\u1ebft k\u1ebf c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/h2>\n<p>Nh\u00f3m n\u00e0y n\u1eb7ng v\u1edbi Back-end v\u00e0 DBA, th\u01b0\u1eddng m\u1edf \u0111\u1ea7u b\u1eb1ng &#8220;index l\u00e0 g\u00ec, khi n\u00e0o kh\u00f4ng n\u00ean t\u1ea1o&#8221;. \u00dd tr\u1ea3 l\u1eddi: index gi\u1ed1ng m\u1ee5c l\u1ee5c, t\u00ecm nhanh h\u01a1n nh\u01b0ng l\u00e0m ghi ch\u1eadm v\u00e0 t\u1ed1n dung l\u01b0\u1ee3ng, n\u00ean ch\u1ec9 t\u1ea1o tr\u00ean c\u1ed9t hay l\u1ecdc, n\u1ed1i, s\u1eafp x\u1ebfp. V\u1edbi truy v\u1ea5n ch\u1eadm, h\u00e3y \u0111o tr\u01b0\u1edbc, s\u1eeda sau: \u0111\u1ecdc execution plan b\u1eb1ng EXPLAIN (MySQL, PostgreSQL) ho\u1eb7c SQL Server Management Studio, t\u00ecm ch\u1ed7 qu\u00e9t to\u00e0n b\u1ea3ng, r\u1ed3i m\u1edbi b\u1ecf SELECT * ho\u1eb7c th\u00eam index.<\/p>\n<p>C\u00e2u thi\u1ebft k\u1ebf hay g\u1eb7p g\u1ed3m kh\u00f3a ch\u00ednh, kh\u00f3a ngo\u1ea1i v\u00e0 chu\u1ea9n h\u00f3a 1NF \u0111\u1ebfn 3NF. V\u1edbi transaction, h\u00e3y gi\u1ea3i th\u00edch ACID (Atomicity, Consistency, Isolation, Durability) b\u1eb1ng v\u00ed d\u1ee5 chuy\u1ec3n ti\u1ec1n gi\u1eefa hai t\u00e0i kho\u1ea3n. C\u00e2u n\u00e2ng cao l\u00e0 isolation level: m\u1eb7c \u0111\u1ecbnh c\u1ee7a PostgreSQL v\u00e0 SQL Server l\u00e0 READ COMMITTED, c\u00f2n InnoDB c\u1ee7a MySQL l\u00e0 REPEATABLE READ.<\/p>\n<p style=\"text-align:center\"><img decoding=\"async\" src=\"https:\/\/cl-wpml.careerlink.vn\/cam-nang-viec-lam\/wp-content\/uploads\/2026\/10\/20154938\/a-cau-hoi-phong-van-sql-2.png\" alt=\"c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL\" style=\"max-width:100%;height:auto;\" \/><\/p>\n<h2>5. B\u1ea3ng c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL theo v\u1ecb tr\u00ed<\/h2>\n<p>C\u00f9ng m\u1ed9t c\u00e2u h\u1ecfi, m\u1ed7i v\u1ecb tr\u00ed nh\u1ea5n m\u1ed9t g\u00f3c kh\u00e1c nhau. B\u1ea3ng d\u01b0\u1edbi gi\u00fap b\u1ea1n ch\u1ecdn tr\u1ecdng t\u00e2m \u00f4n. H\u00e3y \u0111\u1ecdc theo h\u00e0ng.<\/p>\n<table class=\"table table-bordered table-striped\">\n<tr style=\"background:#1565c0;color:#fff\">\n<th>C\u00e2u h\u1ecfi<\/th>\n<th>Nh\u00e0 tuy\u1ec3n d\u1ee5ng ki\u1ec3m tra g\u00ec<\/th>\n<th>Data Analyst<\/th>\n<th>Back-end Developer<\/th>\n<th>DBA<\/th>\n<\/tr>\n<tr>\n<td>LEFT JOIN kh\u00e1c INNER JOIN?<\/td>\n<td>Hi\u1ec3u d\u1eef li\u1ec7u thi\u1ebfu v\u00e0 ph\u00ecnh d\u00f2ng<\/td>\n<td>Ki\u1ec3m tra t\u1ed5ng sau JOIN<\/td>\n<td>Ch\u1ecdn JOIN khi map d\u1eef li\u1ec7u cho API<\/td>\n<td>\u1ea2nh h\u01b0\u1edfng k\u1ebf ho\u1ea1ch th\u1ef1c thi<\/td>\n<\/tr>\n<tr style=\"background:#f0f7ff\">\n<td>L\u1ea5y top N m\u1ed7i nh\u00f3m?<\/td>\n<td>D\u00f9ng window function<\/td>\n<td>ROW_NUMBER tr\u00ean b\u00e1o c\u00e1o<\/td>\n<td>Ph\u00e2n trang theo nh\u00f3m<\/td>\n<td>Index h\u1ed7 tr\u1ee3 s\u1eafp x\u1ebfp<\/td>\n<\/tr>\n<tr>\n<td>Transaction v\u00e0 ACID?<\/td>\n<td>Hi\u1ec3u to\u00e0n v\u1eb9n d\u1eef li\u1ec7u<\/td>\n<td>Bi\u1ebft d\u1eef li\u1ec7u ch\u01b0a commit<\/td>\n<td>M\u1edf, \u0111\u00f3ng transaction \u0111\u00fang ch\u1ed7<\/td>\n<td>Isolation level, deadlock<\/td>\n<\/tr>\n<\/table>\n<div style=\"background:#e8f5e9;border-left:4px solid #4caf50;padding:15px 20px;margin:20px 0;border-radius:4px\">\n<p><strong>L\u1eddi khuy\u00ean khi luy\u1ec7n t\u1eadp<\/strong><\/p>\n<p>\u2013 B\u1ea1n h\u00e3y t\u1ef1 t\u1ea1o hai b\u1ea3ng kh\u00e1ch h\u00e0ng v\u00e0 \u0111\u01a1n h\u00e0ng m\u1eabu tr\u00ean PostgreSQL.<\/p>\n<p>\u2013 B\u1ea1n n\u00ean n\u00f3i th\u00e0nh ti\u1ebfng t\u1eebng b\u01b0\u1edbc tr\u01b0\u1edbc khi g\u00f5 c\u00e2u l\u1ec7nh ho\u00e0n ch\u1ec9nh.<\/p>\n<p>\u2013 B\u1ea1n h\u00e3y ghi l\u1ea1i l\u1ed7i t\u1eebng g\u1eb7p nh\u01b0 ph\u00ecnh d\u00f2ng hay chia cho NULL.<\/p>\n<p>Ba th\u00f3i quen n\u00e0y gi\u00fap b\u1ea1n b\u00ecnh t\u0129nh h\u01a1n \u1edf v\u00f2ng live.<\/p>\n<\/div>\n<p>B\u00e0i t\u1eadp t\u1ef1 d\u1ef1ng th\u01b0\u1eddng h\u1eefu \u00edch h\u01a1n \u0111\u00e1p \u00e1n c\u00f3 s\u1eb5n.<\/p>\n<h2>6. C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p<\/h2>\n<p><strong><em>1. Ph\u1ecfng v\u1ea5n SQL c\u00f3 cho tra c\u1ee9u kh\u00f4ng?<\/em><\/strong> T\u00f9y c\u00f4ng ty; nhi\u1ec1u n\u01a1i cho tra c\u00fa ph\u00e1p nh\u01b0ng ch\u1ea5m suy lu\u1eadn.<\/p>\n<p><strong><em>2. Fresher c\u1ea7n bi\u1ebft window function kh\u00f4ng?<\/em><\/strong> V\u1edbi Data Analyst, ROW_NUMBER v\u00e0 RANK kh\u00e1 th\u01b0\u1eddng g\u1eb7p.<\/p>\n<p><strong><em>3. N\u00ean \u00f4n h\u1ec7 qu\u1ea3n tr\u1ecb n\u00e0o tr\u01b0\u1edbc?<\/em><\/strong> \u00d4n theo tin tuy\u1ec3n d\u1ee5ng; kh\u00f4ng ghi th\u00ec ch\u1ecdn PostgreSQL ho\u1eb7c MySQL.<\/p>\n<p>V\u01b0\u1ee3t v\u00f2ng k\u1ef9 thu\u1eadt kh\u00f4ng ch\u1ec9 nh\u1edd thu\u1ed9c c\u00fa ph\u00e1p m\u00e0 nh\u1edd gi\u1ea3i th\u00edch \u0111\u01b0\u1ee3c l\u1ef1a ch\u1ecdn c\u1ee7a m\u00ecnh. Khi luy\u1ec7n <strong>c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n SQL<\/strong>, h\u00e3y \u0111i t\u1eeb JOIN, HAVING, NULL \u0111\u1ebfn CTE, window function, index v\u00e0 transaction, r\u1ed3i t\u1ef1 gi\u1ea3i b\u00e0i tr\u00f9ng l\u1eb7p v\u00e0 top N m\u1ed7i nh\u00f3m b\u1eb1ng c\u00e1ch n\u00f3i th\u00e0nh ti\u1ebfng. Tr\u01b0\u1edbc khi ch\u1ed1t \u0111\u00e1p \u00e1n, h\u00e3y ki\u1ec3m tra con s\u1ed1 c\u00f3 h\u1ee3p l\u00fd kh\u00f4ng, v\u00ec \u0111\u00f3 l\u00e0 k\u1ef9 n\u0103ng t\u1ea1o kh\u00e1c bi\u1ec7t.<\/p>\n<p><em>B\u00e0i vi\u1ebft mang t\u00ednh tham kh\u1ea3o; h\u00ecnh th\u1ee9c ph\u1ecfng v\u1ea5n t\u00f9y doanh nghi\u1ec7p, c\u00fa ph\u00e1p n\u00ean \u0111\u1ed1i chi\u1ebfu t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a h\u1ec7 qu\u1ea3n tr\u1ecb.<\/em><\/p>\n<p><em>Minh An<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nhi\u1ec1u \u1ee9ng vi\u00ean vi\u1ebft \u0111\u01b0\u1ee3c truy v\u1ea5n nh\u01b0ng v\u1eabn tr\u01b0\u1ee3t v\u00ec kh\u00f4ng gi\u1ea3i th\u00edch \u0111\u01b0\u1ee3c l\u1ef1a ch\u1ecdn c\u1ee7a m\u00ecnh. B\u00e0i vi\u1ebft gom c\u00e1c c\u00e2u h\u1ecfi &#8230;<\/p>\n","protected":false},"author":58,"featured_media":31541,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"class_list":["post-31562","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-phong-van-viec-lam"],"_links":{"self":[{"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/posts\/31562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/comments?post=31562"}],"version-history":[{"count":1,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/posts\/31562\/revisions"}],"predecessor-version":[{"id":31563,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/posts\/31562\/revisions\/31563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/media\/31541"}],"wp:attachment":[{"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/media?parent=31562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/categories?post=31562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.careerlink.vn\/cam-nang-viec-lam\/wp-json\/wp\/v2\/tags?post=31562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}