Làm thế nào để bạn sử dụng chức năng riêng biệt?

df <- tibble( x = sample(10, 100, rep = TRUE), y = sample(10, 100, rep = TRUE) ) nrow(df) #> [1] 100 nrow(distinct(df)) #> [1] 64 nrow(distinct(df, x, y)) #> [1] 64 distinct(df, x) #> # A tibble: 10 × 1 #> x #>#> 1 9 #> 2 6 #> 3 1 #> 4 10 #> 5 2 #> 6 4 #> 7 8 #> 8 7 #> 9 3 #> 10 5 distinct(df, y) #> # A tibble: 10 × 1 #> y #>#> 1 6 #> 2 9 #> 3 10 #> 4 1 #> 5 2 #> 6 3 #> 7 5 #> 8 7 #> 9 8 #> 10 4 # You can choose to keep all other variables as well distinct(df, x, .keep_all = TRUE) #> # A tibble: 10 × 2 #> x y #>#> 1 9 6 #> 2 6 9 #> 3 1 10 #> 4 10 1 #> 5 2 2 #> 6 4 10 #> 7 8 6 #> 8 7 3 #> 9 3 10 #> 10 5 6 distinct(df, y, .keep_all = TRUE) #> # A tibble: 10 × 2 #> x y #>#> 1 9 6 #> 2 6 9 #> 3 1 10 #> 4 10 1 #> 5 2 2 #> 6 7 3 #> 7 6 5 #> 8 2 7 #> 9 10 8 #> 10 3 4 # You can also use distinct on computed variables distinct(df, diff = abs(x - y)) #> # A tibble: 10 × 1 #> diff #>#> 1 3 #> 2 9 #> 3 0 #> 4 6 #> 5 2 #> 6 4 #> 7 1 #> 8 5 #> 9 7 #> 10 8 # use across() to access select()-style semantics distinct(starwars, across(contains("color"))) #> # A tibble: 67 × 3 #> hair_color skin_color eye_color #>#> 1 blond fair blue #> 2 NA gold yellow #> 3 NA white, blue red #> 4 none white yellow #> 5 brown light brown #> 6 brown, grey light blue #> 7 brown light blue #> 8 NA white, red red #> 9 black light brown #> 10 auburn, white fair blue-gray #> # … with 57 more rows # Grouping ------------------------------------------------- # The same behaviour applies for grouped data frames, # except that the grouping variables are always included df <- tibble( g = c(1, 1, 2, 2), x = c(1, 1, 2, 1) ) %>% group_by(g) df %>% distinct(x) #> # A tibble: 3 × 2 #> # Groups: g [2] #> g x #>#> 1 1 1 #> 2 2 2 #> 3 2 1

Nếu bạn muốn làm theo hướng dẫn này, hãy lấy DDL để tạo bảng và DML để điền dữ liệu. Sau đó thử các ví dụ trong cơ sở dữ liệu của riêng bạn

Nhận DDL/DML

Ví dụ - Tìm các giá trị duy nhất trong một cột

Hãy xem cách sử dụng mệnh đề DISTINCT để tìm các giá trị duy nhất trong một cột của bảng

Trong ví dụ này, chúng tôi có một bảng được gọi là nhà cung cấp với dữ liệu sau

nhà cung cấp_idsupplier_namecitystate100MicrosoftRedmondWashington200GoogleMountain ViewCalifornia300OracleThành phố RedwoodCalifornia400Kimberly-ClarkIrvingTexas500Tyson FoodsSpringdaleArkansas600SC JohnsonRacineWisconsin700Dole Food CompanyLàng WestlakeCalifornia800Flowers FoodsThomasvilleGeorgia900Electronic ArtsforniaThành phố RedwoodCalifornia

Hãy tìm tất cả các trạng thái duy nhất trong bảng nhà cung cấp. Nhập câu lệnh SQL sau

Thử đi
SELECT DISTINCT state
FROM suppliers
ORDER BY state;

Sẽ có 6 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy

bangArkansasCaliforniaGeorgiaTexasWashingtonWisconsin

Ví dụ này sẽ trả về tất cả các giá trị trạng thái duy nhất từ ​​bảng nhà cung cấp và xóa mọi giá trị trùng lặp khỏi tập kết quả. Như bạn có thể thấy, tiểu bang California chỉ xuất hiện một lần trong tập hợp kết quả thay vì bốn lần

Ví dụ - Tìm các giá trị duy nhất trong nhiều cột

Tiếp theo, hãy xem cách sử dụng mệnh đề DISTINCT của SQL để loại bỏ các giá trị trùng lặp khỏi nhiều trường trong câu lệnh SELECT

Sử dụng cùng một bảng nhà cung cấp từ ví dụ trước, nhập câu lệnh SQL sau

Thử đi
SELECT DISTINCT city, state
FROM suppliers
ORDER BY city, state;

Sẽ có 8 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy

thành phốtiểu bangIrvingTexasMountain ViewCaliforniaRacineWisconsinRedmondWashingtonThành phố RedwoodCaliforniaSpringdaleArkansasThomasvilleGeorgiaLàng WestlakeCalifornia

Ví dụ này sẽ trả về từng kết hợp thành phố và tiểu bang duy nhất. Trong trường hợp này, DISTINCT áp dụng cho từng trường được liệt kê sau từ khóa DISTINCT. Như bạn có thể thấy, Redwood City, California chỉ xuất hiện một lần trong tập kết quả thay vì hai lần

Ví dụ - Cách Mệnh đề DISTINCT xử lý Giá trị NULL

Cuối cùng, mệnh đề DISTINCT có coi NULL là một giá trị duy nhất trong SQL không? . Hãy khám phá điều này hơn nữa

Trong ví dụ này, chúng tôi có một bảng được gọi là sản phẩm với dữ liệu sau

product_idproduct_namecategory_id1Pear502Banana503Orange504Apple505Bread756Sliced ​​Ham257KleenexNULL

Bây giờ, hãy chọn các giá trị duy nhất từ ​​trường category_id chứa giá trị NULL. Nhập câu lệnh SQL sau

Thử đi
SELECT DISTINCT category_id
FROM products
ORDER BY category_id;

Sẽ có 4 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy

danh mục_idNULL255075

Trong ví dụ này, truy vấn sẽ trả về các giá trị duy nhất được tìm thấy trong cột category_id. Như bạn có thể thấy ở hàng đầu tiên trong tập hợp kết quả, NULL là một giá trị duy nhất được trả về bởi mệnh đề DISTINCT

Chức năng riêng biệt hoạt động như thế nào?

Hàm Distinct đánh giá một công thức trên từng bản ghi của bảng và trả về bảng một cột gồm các kết quả đã loại bỏ các giá trị trùng lặp . Tên của cột là Kết quả. Các trường của bản ghi hiện đang được xử lý có sẵn trong công thức.

Tôi có thể sử dụng khác biệt ở đâu?

Từ khóa riêng biệt được sử dụng kết hợp với từ khóa được chọn . Nó hữu ích khi cần tránh các giá trị trùng lặp có trong bất kỳ cột/bảng cụ thể nào. Khi chúng tôi sử dụng từ khóa riêng biệt, chỉ các giá trị duy nhất được tìm nạp. cột1, cột2. Tên các trường của bảng.

Việc sử dụng toán tử riêng biệt là gì?

Toán tử DISTINCT trong câu lệnh SELECT lọc tập kết quả để loại bỏ kết quả trùng lặp . -- Trả về các giá trị duy nhất từ ​​một cột. -- NULL được bao gồm trong tập hợp giá trị nếu bất kỳ hàng nào có NULL trong cột này.