{"product_id":"claude-cho-data-viết-database-queries-từ-ngon-ngữ-tự-nhien","title":"Claude cho Data: Viết database queries từ ngôn ngữ tự nhiên","description":"\n\u003cp\u003eBạn không cần nhớ cú pháp \u003ccode\u003eDATE_TRUNC\u003c\/code\u003e của PostgreSQL hay cách \u003ccode\u003eFLATTEN\u003c\/code\u003e array trong Snowflake. Chỉ cần mô tả dữ liệu bạn cần bằng ngôn ngữ bình thường — Claude sẽ viết SQL chính xác, tối ưu, và sẵn sàng chạy. Đây là cánh cổng để mọi người trong team, dù không phải kỹ thuật, đều có thể tự trả lời câu hỏi về dữ liệu.\u003c\/p\u003e\n\n\u003ch2\u003eCú pháp cơ bản\u003c\/h2\u003e\n\n\u003cp\u003eĐơn giản nhất chỉ cần mô tả bạn muốn gì:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eTôi dùng PostgreSQL. Bảng orders có cột:\norder_id, customer_id, created_at, status, total_amount, province.\n\nViết query: đếm số đơn hàng theo tỉnh thành trong tháng 3\/2026,\nchỉ đơn đã completed, sắp xếp giảm dần.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eClaude trả về ngay:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eSELECT\n    province,\n    COUNT(*) AS order_count\nFROM orders\nWHERE DATE_TRUNC('month', created_at) = '2026-03-01'\n  AND status = 'completed'\nGROUP BY province\nORDER BY order_count DESC;\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eNăm loại câu hỏi Claude xử lý tốt nhất\u003c\/h2\u003e\n\n\u003ch3\u003e1. Tổng hợp và đếm\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eTổng doanh thu, số đơn hàng, và giá trị đơn trung bình\ntheo tháng trong Q1\/2026. Kết quả có cả % thay đổi\nso với cùng kỳ năm ngoái.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003e2. Top N ranking\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eTop 10 khách hàng chi tiêu nhiều nhất trong 90 ngày gần đây.\nBao gồm: tên, email, tổng chi tiêu, số lần mua, lần mua gần nhất.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003e3. Phân tích cohort\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eNhóm khách hàng theo tháng đăng ký đầu tiên.\nVới mỗi cohort, tính số % còn mua hàng trong tháng 1, 3, 6 sau đăng ký.\n\"Còn mua hàng\" = có ít nhất 1 order completed trong tháng đó.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003e4. Phân tích funnel\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003ePhân tích funnel từ add-to-cart đến purchase trong tháng 3.\nTính số unique users ở mỗi bước và tỷ lệ drop-off.\nBước: view_product, add_to_cart, checkout_start, payment_complete.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003e5. Tìm bất thường\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eTìm các đơn hàng bất thường trong tháng 3:\n- Cùng một khách hàng đặt hơn 10 đơn trong 1 giờ\n- Đơn có tổng tiền lớn hơn 50 triệu VND\n- Đơn giao về cùng địa chỉ nhưng khác customer_id\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eCung cấp context giúp Claude viết đúng hơn\u003c\/h2\u003e\n\n\u003cp\u003eCâu hỏi mơ hồ ra query kém. Bao gồm context này để tăng độ chính xác:\u003c\/p\u003e\n\n\u003ch3\u003eDialect database\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eDùng BigQuery (Google Cloud), dữ liệu partition theo event_date.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eTên bảng và cột chính\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eBảng chính: analytics.orders\nCác cột: order_id (STRING), customer_id (STRING),\n         order_date (DATE), status (STRING),\n         gmv (NUMERIC), channel (STRING)\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eĐịnh nghĩa metric của công ty\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eLưu ý: \"doanh thu\" ở công ty tôi = GMV của orders\ncó status IN ('completed', 'delivered').\nKhông bao gồm 'pending' và 'cancelled'.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eStandard filters luôn cần áp dụng\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eLuôn filter: is_test_order = false\nvà source != 'internal_qa'\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eVí dụ đầy đủ: Báo cáo KPI tháng\u003c\/h2\u003e\n\n\u003cpre\u003e\u003ccode\u003eMôi trường: Snowflake\nSchema: analytics\n\nViết query báo cáo KPI tháng 3\/2026 cho CEO:\n\n1. Tổng GMV (đơn completed + delivered)\n2. Số đơn hàng mới\n3. Số khách hàng mới (lần đầu mua)\n4. AOV (Average Order Value)\n5. So sánh với tháng 2\/2026 (% thay đổi)\n\nBảng: analytics.orders (order_id, customer_id, order_date,\nstatus, gmv, is_test_order)\n\nLuôn filter is_test_order = false.\nFormat output: metric, gia_tri_t3, gia_tri_t2, pct_change\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eOutput từ Claude:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eWITH\nmarch_data AS (\n    SELECT\n        SUM(CASE WHEN status IN ('completed', 'delivered') THEN gmv ELSE 0 END) AS total_gmv,\n        COUNT(*) AS total_orders,\n        COUNT(DISTINCT customer_id) AS unique_customers,\n        AVG(CASE WHEN status IN ('completed', 'delivered') THEN gmv END) AS avg_order_value\n    FROM analytics.orders\n    WHERE DATE_TRUNC('MONTH', order_date) = '2026-03-01'\n      AND is_test_order = false\n),\nfeb_data AS (\n    SELECT\n        SUM(CASE WHEN status IN ('completed', 'delivered') THEN gmv ELSE 0 END) AS total_gmv,\n        COUNT(*) AS total_orders,\n        COUNT(DISTINCT customer_id) AS unique_customers,\n        AVG(CASE WHEN status IN ('completed', 'delivered') THEN gmv END) AS avg_order_value\n    FROM analytics.orders\n    WHERE DATE_TRUNC('MONTH', order_date) = '2026-02-01'\n      AND is_test_order = false\n),\nnew_customers_march AS (\n    SELECT COUNT(DISTINCT customer_id) AS new_customers\n    FROM analytics.orders\n    WHERE DATE_TRUNC('MONTH', order_date) = '2026-03-01'\n      AND is_test_order = false\n      AND customer_id NOT IN (\n          SELECT DISTINCT customer_id FROM analytics.orders\n          WHERE order_date \u0026lt; '2026-03-01' AND is_test_order = false\n      )\n),\nnew_customers_feb AS (\n    SELECT COUNT(DISTINCT customer_id) AS new_customers\n    FROM analytics.orders\n    WHERE DATE_TRUNC('MONTH', order_date) = '2026-02-01'\n      AND is_test_order = false\n      AND customer_id NOT IN (\n          SELECT DISTINCT customer_id FROM analytics.orders\n          WHERE order_date \u0026lt; '2026-02-01' AND is_test_order = false\n      )\n)\nSELECT\n    metric,\n    gia_tri_t3,\n    gia_tri_t2,\n    ROUND(100.0 * (gia_tri_t3 - gia_tri_t2) \/ NULLIF(gia_tri_t2, 0), 1) AS pct_change\nFROM (\n    SELECT 'GMV (VND)'          AS metric, m.total_gmv        AS gia_tri_t3, f.total_gmv        AS gia_tri_t2 FROM march_data m, feb_data f\n    UNION ALL\n    SELECT 'So don hang',                   m.total_orders,                  f.total_orders     FROM march_data m, feb_data f\n    UNION ALL\n    SELECT 'Khach hang moi',               nc_m.new_customers,              nc_f.new_customers FROM new_customers_march nc_m, new_customers_feb nc_f\n    UNION ALL\n    SELECT 'AOV (VND)',                     m.avg_order_value,               f.avg_order_value  FROM march_data m, feb_data f\n) kpis\nORDER BY metric;\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eKhi Claude cần hỏi thêm\u003c\/h2\u003e\n\n\u003cp\u003eNếu yêu cầu có thể hiểu theo nhiều cách, Claude sẽ hỏi rõ trước khi viết:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n  \u003cp\u003e\"Bạn muốn 'khách hàng mới' nghĩa là (A) đăng ký trong tháng đó hay (B) lần đầu tiên mua hàng trong tháng đó? Hai cách tính sẽ cho kết quả khác nhau.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eĐây là tín hiệu tốt — Claude đang giúp bạn làm rõ yêu cầu kinh doanh trước khi code, tránh phải chạy lại query.\u003c\/p\u003e\n\n\u003ch2\u003eChạy query và tự điều chỉnh\u003c\/h2\u003e\n\n\u003cp\u003eNếu có kết nối data warehouse, Claude không chỉ viết mà còn chạy và validate:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eChạy query vừa viết và kiểm tra:\n1. Số hàng trả về có hợp lý không?\n2. Tổng GMV có trong tầm hợp lý không (khoảng 50-200 tỷ)?\n3. Có NULL nào bất thường không?\nNếu kết quả trông sai, tự động debug và sửa.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eMẹo cho người mới bắt đầu\u003c\/h2\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eBắt đầu đơn giản\u003c\/strong\u003e: Hỏi từng câu nhỏ, ghép lại sau — thay vì một câu siêu phức tạp ngay\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNêu dialect ngay đầu\u003c\/strong\u003e: \"Tôi dùng PostgreSQL\" một lần là đủ cho cả session\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDùng tên cột thật\u003c\/strong\u003e: Nếu biết tên cột, nêu ra — giúp query chính xác hơn nhiều\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLuôn hỏi giải thích\u003c\/strong\u003e: \"Giải thích query này làm gì từng bước\" — vừa học vừa verify logic\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eYêu cầu variation\u003c\/strong\u003e: \"Viết thêm một cách khác để tôi so sánh performance\"\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eBước tiếp theo\u003c\/h2\u003e\n\u003cp\u003eKhi đã quen với natural language to SQL, nâng cấp lên \u003ca href=\"\/en\/collections\/ung-dung\"\u003eviết SQL queries phức tạp\u003c\/a\u003e để hiểu cách dùng CTEs, window functions, và tối ưu hiệu suất cho dataset hàng triệu hàng.\u003c\/p\u003e\n\n\n\u003chr\u003e\n\u003ch3\u003eBài viết liên quan\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"\/en\/products\/claude-cho-data-vi%E1%BA%BFt-sql-queries-ph%E1%BB%A9c-t%E1%BA%A1p\"\u003eClaude cho Data: Viết SQL queries phức tạp\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/en\/products\/claude-cho-data-phan-tich-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%B1-d%E1%BB%99ng\"\u003eClaude cho Data: Phân tích dữ liệu tự động\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/en\/products\/claude-cho-data-phan-tich-th%E1%BB%91ng-ke-chuyen-sau\"\u003eClaude cho Data: Phân tích thống kê chuyên sâu\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/en\/products\/claude-cho-engineering-code-review-t%E1%BB%B1-d%E1%BB%99ng\"\u003eClaude cho Engineering: Code Review tự động\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/en\/products\/claude-cho-lu%E1%BA%ADt-s%C6%B0-nghien-c%E1%BB%A9u-phap-ly-va-so%E1%BA%A1n-van-b%E1%BA%A3n\"\u003eClaude cho luật sư — Nghiên cứu pháp lý và soạn văn bản\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47722092036308,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/claude-cho-data-vi_t-database-queries-t_-ngon-ng_-t_-nhien_51787eac-8e48-4180-91a3-7fd60bc8dce6.jpg?v=1774521971","url":"https:\/\/claude.vn\/en\/products\/claude-cho-data-vi%e1%ba%bft-database-queries-t%e1%bb%ab-ngon-ng%e1%bb%af-t%e1%bb%b1-nhien","provider":"CLAUDE.VN","version":"1.0","type":"link"}