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:”
Tin CNTT, Tin Tức

TIỂU SỬ STEVE JOBS vs APPLE

IMG_5399
1955: – Steve Jobs sinh ra tại thành phố San Francisco, bang California, Hoa Kỳ
– Bill Gates sinh ra tại thành phố Seattle, bang Washington
1971: Làm bạn với Steve Wozniak
1972: Vào học ở Đại học Reed, bang Oregon, nghi học không lâu sau đó
1974: Trở thành nhân viên làm đêm cho hãng Atari, một hãng sản xuất trò chơi điện tử
1975: Bill Gates gây dựng Microsoft
1976: – Jobs cùng Wozniak và Ronald Wayne gây dựng Apple.
– Ra mắt máy tính “Apple I”
1977: – Mike Markkula gia nhập Apple, được bổ nhiệm vào vị trí giám đốc Apple.
– Ra mắt máy tính “Apple II”đầu tiên trên thế giới. Bùng nổ thành cơn sốt lớn.
1979: – Tham quan học tập tại Trung tâm Nghiên cứu Palo Alto của XEROX, thu được các ý tưởng từ đó.
– Bắt đầu phát triển dự án máy tính Lisa
1980: – Niêm yết cổ phiếu Apple, trở thành tỉ phú
– Ra mắt máy tính “Apple III” Kết thúc trong tình trạng không thuận lợi.
1981: – Quàn lý nhóm phát triển “Macintosh”
– Được bổ nhiệm làm chủ tịch Hội đồng quản trị Apple
– Giám đốc Apple là Mike Markkula
– IBM ra mắt máy tính IBM PC
1982: NEC cho ra mắt series máy tính PC9800, trở thành model tiêu chuẩn
1983: – Bổ nhiệm John Sculley làm giám đốc Apple
– Cho ra mắt “Lisa” Kết thúc trong tình trạng không thuận lợi.
1984: – Cho ra mắt máy tính nổi tiếng “Macintosh”
– Phát hành quảng cáo mang tính lịch sử “1984”
1985: – Bị sa thải khôi Apple
– Microsoft cho ra mắt Windows bản đầu tiên
1986: – Gây dựng NeXT
– Mua lại Computer Division từ George Lucas để thành lập Pixar
1987: Apple cho ra mắt “Macintosh II”
1988: Pixar xuất bản phim hoạt hình ngán “Tin Toy”
1989: “Tin Toy” nhận giải thưởng Oscar cho hạng mục phim hoạt hình ngắn hay nhất
Tiếp tục đọc “TIỂU SỬ STEVE JOBS vs APPLE”

Tin CNTT, Tin Tức

Một phút với Steve Job – 77 triết lý truyền cảm hứng của “phù thủy công nghệ”

Sân khấu số 1: Tìm ra “sức mạnh mình không có” từ tập thể

01: Trong lúc nguy khốn nhất, tôi sẽ huy động tất cả những người xung quanh mình và tin vào họ
02: Dù thấy rằng mục tiêu không khả thi đi chăng nữa, tôi cũng không hạ thấp nó, tôi sẽ chỉ nâng mục tiêu lên thôi.
03: Tôi sẽ tạo ra thật nhiều nhóm gồm những người ưu tú và để họ thực hiện ước mơ.
04: Không có nhóm nào gây phiền phức, rắc rối. Apple là một công ty như mới thành lập thôi
05: Tôi không muốn vận hành một bộ phận có quy mô từ 100 người trở lên
06: Nếu 18 người có ý tưởng mà chi có 2 ý tưởng thành hiện thực, thì 16 người còn lại sẽ thật bất hạnh
07: Doanh thu mà lên tới mây trăm triệu đô thì bản thân doanh nghiệp sẽ mất đi sự thú vị của nó
08: Không ra “chất” Apple chút nào. Chúng ta đâu có màu mè như vậy
09: Mấy người đó không yêu những thứ họ tạo ra.
10: Tôi đà nghĩ rằng chằng có người tài nữa, nhưng không phải vậy.
11: Hãy tập trung vào những chỗ anh chắc chắn rằng mìnhcó khả năng/mình rất tự tin.
12: Mỗi lần sắp hoàn thành một việc nào đó, tôi lại nghĩ “Tiếp theo không biết mình sẽ làm gì đây nhỉ?”.

Tiếp tục đọc “Một phút với Steve Job – 77 triết lý truyền cảm hứng của “phù thủy công nghệ””

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)”

Tin CNTT, Tin Tức

Don’t Mess with Bill Gates (Sưu Tầm Internet)

1298910119712812001_574_0

 

Redmond, 2006
8 h tối, bóng 1 gã đầu bù tóc rối còn đang ngồi suy tư trên ghế bành:
“Hôm nay là ngày làm việc cuối cùng của ta tại Microsoft, từ mai Balmer sẽ thay ta tiếp quản công ty. Con thuyền Microsoft sẽ vẫn tiến lên phía trước. Ta nhớ thời kỳ mới lập nghiệp, báo chí nói thành công của ta là do may mắn vớ được hợp đồng béo bở với IBM. Họ chẳng hiểu gì cả. Họ tưởng là dễ dàng hay sao khi lúc đó đã có gã Steve Jobs với hệ điều hành Macintosh, dễ dàng hay sao mà mấy tay đầu có sạn ở IBM lại để ta nẫng tay trên miếng bánh béo bở vậy? Hmm, trên đời đâu có chuyện cổ tích như vậy. Ta còn nhớ khi đó …”

Tiếp tục đọc “Don’t Mess with Bill Gates (Sưu Tầm Internet)”