Câu lệnh truy vấn và xoá dữ liệu trong SQL (2 người xem)

  • Thread starter Thread starter tkhieu
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

tkhieu

Thành viên chính thức
Tham gia
13/9/13
Bài viết
62
Được thích
5
Xin chào mọi người.
Mình có bảng dữ liệu T với cột A là số lượng.
Nhờ mọi người giúp mình câu lệnh sắp xếp cột A theo giá trị từ lớn đến bé, đồng thời hiển thị thêm 1 cột là luỹ kế của cột A
Sau đó xoá 20 dòng dữ liệu đầu tiên của bảng T sau khi đã sắp xếp cột A theo giá trị từ lớn đến bé.
 
Sub SortAndCumulativeDelete()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Thay "Sheet1" bằng tên sheet của bạn nếu cần

' Sắp xếp cột A từ lớn đến bé
ws.Range("A1").CurrentRegion.Sort Key1:=ws.Range("A1"), Order1:=xlDescending, Header:=xlYes

' Tính lũy kế cho cột A và đặt vào cột B
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Dim cumulativeSum As Double
cumulativeSum = 0

Dim i As Long
For i = 2 To lastRow ' Bắt đầu từ hàng 2, giả sử hàng đầu tiên là tiêu đề
cumulativeSum = cumulativeSum + ws.Cells(i, 1).Value
ws.Cells(i, 2).Value = cumulativeSum
Next i

' Xóa 20 dòng đầu tiên (sau tiêu đề)
ws.Rows("2:21").Delete
End Sub
 
Xin chào mọi người.
Mình có bảng dữ liệu T với cột A là số lượng.
Nhờ mọi người giúp mình câu lệnh sắp xếp cột A theo giá trị từ lớn đến bé, đồng thời hiển thị thêm 1 cột là luỹ kế của cột A
T-SQL:
SELECT *, A As [ColA], SUM(A) OVER (ORDER BY Ay DESC) as CumulativeSum
FROM bang_du_lieu;

Sau đó xoá 20 dòng dữ liệu đầu tiên của bảng T sau khi đã sắp xếp cột A theo giá trị từ lớn đến bé.
Cũng cái màn chưa rành thống kê đã chơi phân tích dữ liệu.
Nếu có 30 dòng top (bằng nhau) thì bỏ 20 cái nào?
 
Bỏ 20 cái nào cũng được ạ :D
Xóa dữ lệu là việc làm của người biết chính xác rằng mình đang làm gì. Vì vậy tôi chỉ mách cách làm, không viết code giùm bạn.

Tạo một view chứa records của bảng muốn xóa.
Thêm trong view 1 cột cotTam chứa row_number sorted by A, concat cái row_number này với "#" để khóa chặt trị của nó (dùng từ khóa persisted cũng được). Row_Number là hàm volatile, không bảo đảm vị trí của các nhóm đồng hạng.
Dùng lệnh DELETE ... Where cotTam <=20 để xóa 20 dòng đầu.
Drop view.
 
Web KT

Bài viết mới nhất

Back
Top Bottom