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 Show Nhận DDL/DML Ví dụ - Tìm các giá trị duy nhất trong một cộtHã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ử điSELECT 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ộtTiế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ử điSELECT 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, Ví dụ - Cách Mệnh đề DISTINCT xử lý Giá trị NULLCuố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ử điSELECT 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. |