Nhờ anh chị kiểm tra lỗi

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Các anh chị ơi !
Vừa nãy em truy suất dữ liệu thì em thấy kết quả của nó bị sai . Các anh có thể xem giúp em nó đang bị lỗi ở đâu mà sai được không ạ
Em cảm ơn anh chị nhiều
Do em trên diễn đàn em không thể tải lên được file.sql nên có thể nó không trực quan . Anh chị nào biết cách để cho lên thì chỉ giúp em với ^^
2773Em nhìn bằng mắt vẫn thấy số lớn hơn số mà mình tìm ra anh ạ
2774
Phải chăng câu lệnh của em nó bị sai ?

Cái này phải dùng nhiều query con:
Select Location As gLoc, Sum(Revenue) As TongRev From revData Group By Location
Cộng tổng Revenue. Tốt hơn hết là đặt một SavedQuerry cho câu trên
Select gLoc, TongRev From SavedQuerry SQ1 Where SQ1.TongRev = (Select Max(TongRev) From SavedQuerry)

www.giaiphapexcel.com/diendan/threads/nh%E1%BB%9D-anh-ch%E1%BB%8B-ki%E1%BB%83m-tra-l%E1%BB%97i.160325/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 3 ▥ 0
Quảng cáo

Bạn nên đọc

3 Responses

  1. hands says:

    Có thể liên quan đến Data type. Dùng câu lệnh này thử xem.
    Data type của field Revenue là gì? Bạn đặt tên table trùng tên database luôn à?

    Select Max(Cast(dbo.revData.Revenue as int)) from dbo.revData

    Cần hỏi lại thớt trong câu "thành phố có doanh thu lớn nhất" thì "doanh thu" là gì? Là tổng donah thu? là doanh thu theo từng giai đoạn thời gian (tháng, năm)? hay từng phát sinh?

    Select Max(Cast(dbo.revData.Revenue as int)) from dbo.revData

    Tại em đang làm bài tập . Em import một file.csv vào SQL server nên hiện tại em đang không biết kiểm tra kiểu dữ liệu của một cột kiểu gì . Hồi trước em học thì em insert into nên biết luôn kiểu dữ liệu ấy anh .
    Tên của database là revdata còn tên của table là dbo.revdata . Do đây là lần đầu tiên em import một bảng vào database nên cái tên của bảng này cũng là do hệ thống tự đặt ^^

    Cần hỏi lại thớt trong câu "thành phố có doanh thu lớn nhất" thì "doanh thu" là gì? Là tổng donah thu? là doanh thu theo từng giai đoạn thời gian (tháng, năm)? hay từng phát sinh?

    Tại cái File này hiện tại em đang không thấy cột thành phố đâu , để em hỏi lại nhưng mà hiện tại em đang muốn tím ra max của cột "revenue"

    Nếu là TSQL thì thay vì tạo Saved Query, tạo CTE (Common Tabel Expression) ngay trong câu truy vấn sẽ hiệu quả hơn.

    Lần sau hỏi thì nói rõ SQL Server. Đây là diễn đàn Excel, không nói rõ thì mặc định người ta hiểu là Access.

    Dạ vâng ạ . Hiện tại chắc em sẽ tìm hiểu thêm đã(do hổng nhiều) . Có vấn đề gì thì em sẽ hỏi các anh sau vậy ^^

  2. hands says:

    2776
    Các anh ơi ! Tiếp nối chủ đề lúc sáng nhé mấy anh ^^
    Hiện tại em đã chỉnh lại được các kiểu dữ liệu trong bảng em import rồi ạ . Nhưng mà bây giờ em đang muốn tìm ra tháng có doanh thu nhỏ nhất trong năm . Em đã viết được câu lệnh như trên rồi . Mong các anh viết nốt giúp em hoặc cho em gợi ý cũng được ạ
    2775
    Em đã tìm ra lời giải rồi ạ ^^ . Em xin dừng chủ để này lại ở đây , em cảm ơn các anh chị nhiều <3

    Câu lệnh dài dòng rồi. Nếu chỉ có truy vấn 1 table (không có JOIN) thì dùng tên Field khỏi cần tên table trước nó cũng được.
    Không được đặt tên field trùng với các từ khóa của ứng dụng lập trình: Year, Month là các hàm nội tại của SQL Server.

    Select Year, Month, Min(Doanh_Thu_Theo_Thang) As MinDThu From hello
    Group by Year, Month
    Order by Year, Month

    Chào bạn, mình cũng mới tìm hiểu CSDL như bạn
    Thấy mấy câu lệnh viết giống mình hồi đầu, dùng SubQueries
    Select *
    From (
    select from)
    Bạn tìm hiểu thêm mệnh đề Clause để cho câu lệnh dễ nhìn hơn nha

    Oh ! Em cảm ơn các anh ^^ . Em sẽ tìm hiểu rồi sẽ phản hồi lại sớm nhất ạ

  3. hands says:

    Em chào các anh ^^ . Như đã nói ở bài trước . Em đã quay lại rồi đây hi
    Nhưng không phải là để giải quyết câu trước đó^^ .
    Vấn đề bây giờ của em đặt ra như sau:
    Ta có dữ liệu của câu truy vấn 1
    2781
    Ta có dữ liệu của câu truy vấn 2
    2780
    Ta có dữ liệu của câu truy vấn 3:
    2779
    Do tất cả giá trị đều đã được làm tròn về 0 nên kết quả của câu truy vấn 4 sau bị ảnh hưởng:
    2778

    Câu hỏi:
    Làm thế nào để sửa câu truy vấn 3 để giá trị nó không bị làm tròn nữa . Em đã dùng hàm Round nhưng nó vẫn thế:
    2777
    Tại sao dùng hàm round lại không được . Các anh cho em biết nguyên nhân nhé

    Mình đoán trường cusno có data type là Int, khi chia bạn phải cast nó về dạng numeric.

    Vâng ạ ! Đúng như anh nói:2783
    Nhưng mà tại sao lại thế anh nhỉ ? Em xem thử thì các giá trị khi cast hoặc không cast của nó có khác gì nhau đâu
    2782

    ah, thực ra là ntn, khi bạn dùng avg cho cột kia thì nó sẽ là dạng numeric, mà cột tính sum là int, khi chia numeric với int thì sẽ trả về kết quả là int, nên phải chuyển int thành numeric để chia 2 số numeric cho nhau. Cái này nó 1 bài viết về phép nhân và chia 2 số trong sql server. Bạn tìm hiểu thêm ở đó.

    Dạ vâng ạ . Em cảm ơn anh nhiều ^^ . Dể em tìm hiểu rồi có gì em nói lại với anh sau ạ

    Link tham khảo đây bạn nhé: [URL='docs.microsoft.com/en-us/sql/t-sql/language-elements/divide-transact-sql?view=sql-server-ver15']docs.microsoft.com/en-us/sq…nts/divide-transact-sql?view=sql-server-ver15
    Nếu chia 2 numberic thì nó có công thức trả ra kết quả ntn:
    docs.microsoft.com/en-us/sql/t-sql/data-types/precision-scale-and-length-transact-sql?view=sql-server-ver15

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm