SQL Server

Sử dụng Over (PARTITION BY … ODER BY) kết hợp các hàm tính toán, so sánh với GROUP BY

Group by số lượng dòng kết quả trả về sẽ được ít hơn số dòng detail và phụ thuộc vào select (Select cái gì thì Group by cái đó) điều kiện của Group byHaving, điều kiện của SelectWhere

WITH VDOverPartition AS
 (SELECT 1 as ID , N'Thân Văn Hải' as Name, N'A' Team, 9 as Scores
  UNION ALL SELECT 2, N'Nguyễn Thị Ngọc Bích', N'A', 10
  UNION ALL SELECT 3, N'Trần Viết Nguyễn Minh Hiếu', N'A' , 8
  UNION ALL SELECT 4, N'Hồ Quốc Hiếu', N'B', 8
  UNION ALL SELECT 5, N'Hồ Trần Thương Thương,', N'B', 8
  UNION ALL SELECT 6, N'Trần Thị Hà', 'B', 9
  UNION ALL SELECT 7, N'Lê Bá Anh Minh', 'C', 10
  UNION ALL SELECT 8, N'Trần Thị Thủy', 'C', 10
  UNION ALL SELECT 9, N'Trần Phương Thảo', 'C', 8
  UNION ALL SELECT 10, N'Nguyễn Ngọc Ngạn', 'C', 9
)
SELECT Team, count(*) As NumberPerson, sum(Scores) as TotalScores
FROM VDOverPartition
where Scores <10
group by Team
having sum(Scores)<25 

Over (Partition by) linh động hơn sẽ không phụ thuộc select và giữ nguyên các dòng detail và thực hiện tính toán trên nhóm mà mình muốn và có thể tính toán theo trình tự sắp xếp được. Được dùng để xếp hạng (RANK () hoặc DENSE_RANK ()), tính tồn kho tại 1 thời điểm bất kỳ, tính lũy kế, tính lũy tiến, ….

Row_number(): đơn giản là… đánh số thứ tự của từng dòng theo nghĩa nguyên thủy nhất. 

Rank(): là hàm dùng để xếp hạng dữ liệu từ cao tới thấp (nghe giống row_number quá) tuy nhiên có một điểm cốt lõi làm rank khác row_number đó chính là rank sẽ có giá trị bị lặp lại khi data bị trùng lặp, không như row_number và thứ tự hạng sẽ bị nhảy nếu có trùng thứ hạng

DENSE_RANK(): có logic về thứ tự giống như rank, tức là cũng đánh số theo thứ tự, và có giá trị lặp khi cột có giá trị bị lặp lại. Tuy nhiên điểm khác biệt chính của dense rank là không bỏ đi thứ hạng dù cho thứ hạng gần nhất bị lặp lại nhiều lần. 

Tiếp tục đọc “Sử dụng Over (PARTITION BY … ODER BY) kết hợp các hàm tính toán, so sánh với GROUP BY”
CSharp (C#)

Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên

Áp dụng để tính một số bài toán như tìm mặt hàng có n tháng liên tiếp không nhập xuất kho hay hàng hóa có n tháng liên tiếp không được bán trong khoảng thời gian nhất định, ….

Có 2 mảng A và B không trùng phần tử và mảng B luôn luôn là con của mảng A và có thứ tự sắp xếp giống nhau.
Duyệt tìm mảng A trong bảng B kiểm tra vị trí các phần tử thông qua 2 biến BeginStop.
Khởi đầu BeginStop=-1

Nếu tìm thấy phần tử ở vị trí i của mảng A trong mảng B thì gán Stop=i

Sau đó lấy Stop-Begin=1 mảng B đang liên tục trong mảng A

Còn Stop-Begin=0 là mảng không liên tục

Stop-Begin=N là mảng đang khuyết N phần tử liên tiếp.

Có 2 trường hợp đặc biệt:

Là khi mảng B không khuyết phần tử đầu tiên (vị trí 0) thì sẽ cập nhật lại biến Begin=0 nếu ngay khi vòng lặp mảng A có i bắt đầu 0 thì ta cập nhật lại Begin=0
Trường hợp 2 là từ vị trí cuối cùng của mảng B xuất hiện trong mảng A đến hết mảng A không tìm được thấy phần từ nào nữa thì khi đến cuối mảng A phải lấy i(vị trí cuối cùng mảng A)- Begin (vị trí cuối cùng của phần từ A tìm thấy trong mảng B)
Tiếp tục đọc “Kiểm tra 2 mảng khuyết N phần tử liên tiếp trở lên”
CSharp (C#)

Tính tuần của ngày bất kỳ trong năm? Theo chuẩn ISO 8601 và Globalization:

Làm báo cáo thường sử dụng chuẩn 1 năm có 52 tuần và được tính theo chuẩn ISO vậy khi số tuần tính theo ISO mà được 52 hay 53 thì mình cần kiểm tra lại nếu rơi vào tháng 12 thì sẽ là tuần thứ 52 còn rơi vào tháng 1 thì ta sẽ chuyển về tuần 1.

Trong SQL có hàm cung cấp  lấy tuần của ngày ra theo 2 chuẩn này:

VD: kiểm tra ngày 01/07/2022 theo định dạng MM/dd/YYYY

Theo ISO 8601:

select DATEPART(ISOWK,'2022-07-01') as WeekNumberISO
select DATEPART(ISOWK,'2021-01-01') as WeekNumberISO
select DATEPART(ISOWK,'2022-01-01') as WeekNumberISO
select DATEPART(ISOWK,'2020-12-31') as WeekNumberISO
DECLARE @Date date ='2022-01-01'
select case 
			when DATEPART(ISOWK,@Date)>51 and MONTH(@Date)=1 then 1 
			when DATEPART(ISOWK,@Date)>51 and MONTH(@Date)=12 then 52 
			else  DATEPART(ISOWK,@Date) 
		end as WeekNumberISO

Tiếp tục đọc “Tính tuần của ngày bất kỳ trong năm? Theo chuẩn ISO 8601 và Globalization:”
AutoIT

Phần mềm tỏ tình dành cho Lập Trình Viên

AutoIt là một ngôn ngữ kịch bản

AutoIt thường được sử dụng để viết Auto (phần mềm tự động thực hiện việc nào đó theo nhu cầu, ví dụ như tự tắt máy sau một thời gian người dùng không hoạt động) và đa số là Auto Game – tự động chơi, tự động điều khiển nhân vật làm nhiệm vụ trong trò chơi,… Tuy nhiên AutoIt cũng thường được sử dụng để viết virus/malware (có vụ đã được lên báo là virus phát tán qua Yahoo, đợt 2006 thì phải). Thậm chí có người viết cả Botnet/RAT bằng AutoIt.

Sau một thời gian dài các mã độc, virus/malware viết bằng AutoIt xuất hiện tràn lan khiến các trình diệt chỉ cần nhận diện “chữ ký” của ứng dụng đó là AutoIt thì coi là virus/malware luôn. Nữa là AutoIt khi biên dịch sẽ có tùy chọn sử dụng UPX (một trình nén tập tin thực thi để giảm dung lượng), mà những tập tin nén bằng UPX thường bị nhận diện luôn chứ chưa nói tới ngôn ngữ là gì.

AutoIt là ngôn ngữ lập trình tốt xấu là người dùng nó! Xin đừng làm xấu đi 1 ngôn ngữ lập trình cơ bản!

Phiên bản phần mềm được viết thừ thời win 7 (khoảng năm 2010 bắt đầu tự học AutoiIt trên diễn đàn) nên khi chạy trên win 7 một khi đã chạy phần mềm sẽ không thể tắt được nếu không làm theo những gì khi phần mềm hướng dẫn chỉ có cách tắt máy ngang. Có mã nguồn các bạn có thể tham khảo thêm về Keys Functions (nhấn vô để mở link) để khóa các phím nóng không cho tắt phần mềm nếu chưa làm xong các yêu cầu hay ngoài ra có thể tham khảo thêm mã lệnh khởi động cùng windown nữa thì khỏi chạy không làm xong yêu cầu khỏi sử dụng máy (cái này thời xưa lúc đi học có đại ca là ông thầy chỉ cho chiêu phá máy người ta làm màn hình xanh (thực ra nó là 1 mã lệnh phá máy nhưng thực chất ko cần cài lại win nếu máy vô được chế safe mode tắt cái lệnh đó không để khởi động lại cùng win sau đó mở máy lên được hủy cái script đó đi là xong thầy chơi cũng ác dữ bắt cài lại win) chỉ xong nói ko được làm máy ở trường lớp đại học chắc có người còn nhớ đại ca này).

4 phím nóng quan trọng: {!} Phím ALT, {#}Phím WINDOW, {+}Phím SHIFT, {^}Phím CTRL

Bản win lớn hơn win 7 có 1 số cách tắt được phần mềm nhưng nếu đối tượng của bạn là người bình thường không chuyên sâu về máy tính lắm thì cũng không biết cách tắt phần mềm 1 khi đã chạy là phải làm theo những phần mềm ép buộc để thoát khỏi phần mềm.

Show video sản phẩm và vài hình ảnh cho các bạn:

Vk iu:

This slideshow requires JavaScript.

Hình Ảnh:

khởi động chương trình
khởi động chương trình

đọc tiếp Tiếp tục đọc “Phần mềm tỏ tình dành cho Lập Trình Viên”

CSharp (C#)

[Code Demo] Show vẻ đẹp của DevExpress 14.2.7 – Có Code Demo

Bài viết chủ yếu show các hình ảnh và code của các Demo mẫu của DevExpress đẹp!

Dựa vào các hình ảnh này các bạn có thể nảy ra ý tưởng thiết kế thật ấn tượng cho các chương trình của mình

Và ở đây mình cũng chỉ các bạn cách lấy 1 số mẫu demo các control khi đã cài Dev các bạn vào đường dẫn C:\Users\Public\Documents\DevExpress Demos 14.2\Components\ASP.NET\CS\DevAV và C:\Program Files (x86)\DevExpress 14.2\Components\Sources (Win 64bit nha vì mình dùng win 64bit)

p/s: sẽ up link souce code demo chạy được cho các bạn tham khảo và chỉnh sửa. Code các bạn lấy ở đường dẫn trên sẽ không chạy được và cũng không xem được giao diện lý do vì code đã bị người ta xóa sạch các file dll khi buil của các project rồi họ mới up code hoàn thiện nên nếu bạn không biết cách thì mở lên các bạn sẽ thấy lỗi vì nó thiếu 1 vài thư viện dll phải lên mạng tải về và add References thì mới chạy được.

Nhân đây cũng chỉ các bạn 1 cách mà khi mình dùng những References dll chỉnh thuộc tính Copy Local của References dll là True thì khi buil nó sẽ tự động copy cái dll vào thư mục bin/debug khi này chương trình của bạn mang sang máy khác cũng có thể chạy:

Chỉnh thuộc tính cho dll
nhấn chuột phải vào dll (giữ phím Ctrl để chọn nhiều file dll)l và chọn Properties

Chọn Local Copy là True
Chọn Local Copy là True


Tiếp tục đọc “[Code Demo] Show vẻ đẹp của DevExpress 14.2.7 – Có Code Demo”

CSharp (C#)

[GridDevExpress] Demo GridControl của DevExpress 14.2 (phần 2)

Tiếp tục phần 2 sẽ chỉ các bạn sử dụng GridControl 1 cách hiệu quả hơn để chọn các trường dữ liệu được hiển thịlọc dữ liệu hay tìm kiếm nhanh, sắp xếp.

Mình thiết kế lại form kéo thả 1 splitContainerControl vào để bên phải là Grid bên trái là 1 Panel để tý nữa mình sẽ tạo ra danh sách các CheckBox cho phép bạn check vào ô nào thì ẩn đi trường dữ liệu của cột tương ứng.

Thiết kế này tuy là có thể kiểm soát được trường mình muốn lấy ra nhưng nó phụ thuộc vào các bảng trong CSDL nếu sau này CSDL thêm 1 cột thì ta cũng phải thêm 1 cột mới ở ngoài chương trình hay CSDL thay đổi tên cột ta cũng phải đổi theo!

OK bây giờ các bạn chọn Grid vào chọn runDesign


Tiếp tục đọc “[GridDevExpress] Demo GridControl của DevExpress 14.2 (phần 2)”

CSharp (C#)

[GridDevExpress] Demo GridControl của DevExpress 14.2 (phần 1)

[GridDevExpress] Demo GridControl của DevExpress phần 1

Hôm nay mình viết bài này để lưu lại kiến thức của mình cũng đồng thời để share cho các bạn biết cách sử dụng Gridcontrol của DevExpress vì theo mình cảm thấy đây là 1 Control quan trọng để làm việc với CSQL và nó cũng hỗ trợ tìm kiếm nhanh rất tiện. Bài viết này có thể dài nên chắc mình sẽ chia làm 2 phần ở phần này mình chỉ các bạn lấy dữ liệu trong SQL ra đổ vào Grid và xuất ra theo dạng BảngLayout. Ở phần 2 thì mình sẽ chỉ các bạn tùy biến cái Grid để xuất CSDL theo ý mình!

Ở đây mình dùng VS 2013 và bản DevExpress 14.2.7


Tiếp tục đọc “[GridDevExpress] Demo GridControl của DevExpress 14.2 (phần 1)”

CSharp (C#)

LapReport các bài tập C# căn bản học tập tại IUH

Phần 1: Consolo

Mục đích: Sử dụng  Các hàm về mảng và các bài tập vẽ hình hay các thuật toán

  • Làm quen với Console
  • Vòng lặp, mảng
  • Xây dựng lớp, đối tượng, thao tác thừa kế

hình menu chính Consolo
hình menu chính Consolo

Phần 2: Windows Form

Mục đích: Sử dụng các control của WindowsForm

  • Textbox, Button, Radiobutton, Checkbox.
  • ListBox, Combobox, CheckListBox GroupBox, Panel & TabControl.
  • MaskEditBox, DateTimePicker, MonthCalendar, Timer, ToolTip
  • PictureBox, ImageList, TrackBar, NumericUpDown, DomainUpDown, ProgressBar.
  • Mouse Event handling, Keyboard event handling.
  • TreeView, ListView
  • Menu – Toolbar – Statu
  • SDI, và MDI

Tiếp tục đọc “LapReport các bài tập C# căn bản học tập tại IUH”

CSharp (C#)

Demo Biểu thuế luỹ tiến từng phần thuế thu nhập cá nhân C#

Ở đây mình chỉ viết theo cách mình nghĩ cách này mình share để mọi người xem và giúp xem có cải tiến thuật toán tính lũy tiến thuế có tốt hơn không?

Lý do khiến mình viết bài này vì đây là đề bài của 1 công ty mình đi phỏng vấn đã yêu cầu mình viết trên giấy nhưng lúc đó người ta đưa ra 1 VD mẫu mình có đọc đề là phải xây dựng hàm làm sao cho khi nhà nước thay đổi lũy tiến thì không được sửa hàm lúc đó mình cũng chỉ viết cứng dựa theo số liệu người ta trong Vd mẫu mà viết mà chỉ mỗi cái lương nó động còn cái khoảng lương và % chịu thuế thì chết cứng cũng may bài làm được chấp nhận nhưng vô phỏng vấn bị ? cải thiện cái hàm đó không phụ thuộc vào dữ liệu cố định của Nhà nước hic lúc đó chỉ làm thêm được cái khoảng % không phụ thuộc còn cái khoảng lương thì ko làm được chống chế nói nếu nhà nước thêm 1 định mức thì cũng phải sửa code nhưng nói qui định lập trình là không được sửa cũng may qua được về nhà mở máy test thử thì cách này ổn nhớ lại những bài vẽ hình C++ thời mới học cũng làm chết không động nhưng hôm kiểm tra ngồi bị thầy nói cũng nghĩ ra được công thức nên fix lại hết các bài cho nó động và cũng đạt điểm tuyệt đối!

Lan man 1 chút kỷ niệm và cũng cảm ơn người thầy đã chỉ dạy tôi lập trình từ những ngày C++

Đầu tiên mình thiết csdl sql lưu như sau:

cấu trúc bảng Biểu thuế luỹ tiến từng phần của Nhà nước
cấu trúc bảng Biểu thuế luỹ tiến từng phần của Nhà nước

Dữ liệu mẫu mình tự nhập (bạn phải nhập đúng theo qui định Nhà nước sau này Nhà nước có thay đổi thì bạn sửa lại trong CSDL không sửa code vẫn chạy đúng chỉ sợ Nhà nước sửa đổi cấu trúc Lũy biến từng phần thì khi đó chắc chắn phải sửa lại hàm tính thuế)

Dữ liệu mẫu
Dữ liệu mẫu


Tiếp tục đọc “Demo Biểu thuế luỹ tiến từng phần thuế thu nhập cá nhân C#”

CSharp (C#)

Món quà tặng 8/3 viết bằng C#

Nhân dịp 8/3 nghịch phá tý vậy! Món quà này dựa theo bộ code món quà giáng sinh của bạn YinYang mình sửa lại và thêm 1 số chức năng.

Nói sơ qua chức năng chức năng:

chức năng chính là tạo ra các bông tuyết trên màn hình máy tính của bạn

có dòng chữ nhấp nháy chúc mừng ngày 8/3 ở dưới góc màn hình bên phải

khi chương trình chạy sẽ hiện 1 tấm hình như lời chúc mừng

có thêm 1 số tính năng như : đổi chiều gió, khởi động cùng windows, và phát 1 bài hát mà bạn yêu thích!

1 vài pic về chương trình ! Khi qua máy khác mình nghĩ có thể lỗi đường dẫn file nhạc!


Tiếp tục đọc “Món quà tặng 8/3 viết bằng C#”