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

Liên hệ QC

Nguyen Rem

Tất cả chỉ là đưa ra quyết định đúng đắn
Tham gia
23/2/22
Bài viết
211
Được thích
30
Giới tính
Nữ
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 ^^
1652103201459.png
 
Dưới đáy trang có phải câu thông báo lỗi không vậy bạn?
 
1652110170166.png
Em thấy nó hiện "Query executed successfully" anh ạ
 
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)
 
Em nhìn bằng mắt vẫn thấy số lớn hơn số mà mình tìm ra anh ạ
View attachment 275679
Phải chăng câu lệnh của em nó bị sai ?
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 à?

Mã:
Select Max(Cast(dbo.revData.Revenue as int)) from dbo.revData
 
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 à?

Mã:
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?
 
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 à?

Mã:
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 ^^
Bài đã được tự động gộp:

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.
 
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 ^^
 
1652197687211.png
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 ạ
 
1652224196919.png
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
 
View attachment 275759
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.

Sass:
Select Year, Month, Min(Doanh_Thu_Theo_Thang) As MinDThu From hello
Group by Year, Month
Order by Year, Month
 
View attachment 275759
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
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
 
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
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.

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

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 ạ
 
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
1652649702134.png
Ta có dữ liệu của câu truy vấn 2
1652649775756.png
Ta có dữ liệu của câu truy vấn 3:
1652649814205.png
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:
1652649941342.png

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ế:
1652650240302.png
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é
 
Lần chỉnh sửa cuối:
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
View attachment 276003
Ta có dữ liệu của câu truy vấn 2
View attachment 276004
Ta có dữ liệu của câu truy vấn 3:
View attachment 276005
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:
View attachment 276006

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ế:
View attachment 276007
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:View attachment 276011
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
View attachment 276013
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 ở đó.
 
Web KT
Back
Top Bottom