Hướng dẫn mysql median - trung bình mysql
Tôi đang sử dụng bảng dưới đây cho giải pháp trong MySQL:
Tính toán trung bình cho cột 'số tiền':
TotalRecords = 16 và trung bình = 120,5000 Truy vấn này sẽ hoạt động cho cả hai điều kiện, tức là các bản ghi chẵn và lẻ. Tôi có một cơ sở dữ liệu chứa khoảng 1 tỷ hàng mà chúng tôi yêu cầu để xác định tuổi trung bình trong tập hợp. Sắp xếp một tỷ hàng là khó, nhưng nếu bạn tổng hợp các giá trị riêng biệt có thể tìm thấy (độ tuổi từ 0 đến 100), bạn có thể sắp xếp danh sách này và sử dụng một số phép thuật số học để tìm bất kỳ phần trăm nào bạn muốn như sau:
Truy vấn này phụ thuộc vào các chức năng cửa sổ hỗ trợ DB của bạn (bao gồm cả các hàng không bị ràng buộc trước đó) nhưng nếu bạn không có vấn đề đơn giản là tham gia CTE AGGDATA với chính nó và tổng hợp tất cả các tổng số trước đó vào cột 'tích lũy' để xác định cái nào Giá trị chứa tiền lệ được chỉ định. Mẫu trên tính toán P10, P25, P50 (trung bình), p75 và p90. -Chris Đã trả lời ngày 17 tháng 6 năm 2015 lúc 4:53Jun 17, 2015 at 4:53
Chris Knollchris KnollChris Knoll 3912 Huy hiệu bạc13 Huy hiệu đồng2 silver badges13 bronze badges Lấy từ: http://mdb-blog.blogspot.com/2015/06/mysql-find-median-nth-ement-without.html Tôi sẽ đề xuất một cách khác, không cần tham gia, nhưng làm việc với các chuỗiwithout join, but working with strings Tôi đã không kiểm tra nó với các bảng có dữ liệu lớn, nhưng các bảng nhỏ/vừa, nó hoạt động tốt. Điều tốt ở đây, nó cũng hoạt động bằng cách nhóm để nó có thể trả về trung bình cho một số mặt hàng.by GROUPING so it can return the median for several items. Dưới đây là mã kiểm tra cho bảng kiểm tra:
và mã để tìm trung vị cho mỗi nhóm:
Output:
Đã trả lời ngày 19 tháng 6 năm 2015 lúc 12:03Jun 19, 2015 at 12:03
mr.baby123mr.baby123mr.baby123 2.12022 Huy hiệu bạc12 Huy hiệu đồng22 silver badges12 bronze badges 1 Trong một số trường hợp, trung bình được tính như sau: "Trung bình" là giá trị "giữa" trong danh sách các số khi chúng được đặt hàng theo giá trị. Đối với các bộ đếm thậm chí, trung bình là trung bình của hai giá trị trung bình. Tôi đã tạo một mã đơn giản cho điều đó:median is average of the two middle values. I've created a simple code for that :
$ Trung bình trả về sẽ là kết quả cần thiết :-) Đã trả lời ngày 15 tháng 7 năm 2015 lúc 10:54Jul 15, 2015 at 10:54
jitendrapurohitjitendrapurohitjitendrapurohit 9.1792 Huy hiệu vàng26 Huy hiệu bạc38 Huy hiệu Đồng2 gold badges26 silver badges38 bronze badges Trung bình được nhóm theo chiều:
Đã trả lời ngày 4 tháng 8 năm 2015 lúc 16:18Aug 4, 2015 at 16:18
0
Cách này dường như bao gồm cả số đồng đều và số lẻ mà không cần phụ.
Đã trả lời ngày 1 tháng 11 năm 2016 lúc 4:18Nov 1, 2016 at 4:18
Yuhanluoyuhanluoyuhanluo 191 Huy hiệu bạc6 Huy hiệu đồng1 silver badge6 bronze badges 2 Các phương pháp này chọn từ cùng một bảng hai lần. Nếu dữ liệu nguồn đến từ một truy vấn đắt tiền, đây là một cách để tránh chạy nó hai lần:
Đã trả lời ngày 8 tháng 12 năm 2016 lúc 11:17Dec 8, 2016 at 11:17
0HOẶC 1Đã trả lời ngày 5 tháng 3 năm 2017 lúc 1:12Mar 5, 2017 at 1:12
Mã SQL sau đây sẽ giúp bạn tính toán trung bình trong MySQL bằng các biến do người dùng xác định. 2Nếu bạn đang tìm kiếm giải thích chi tiết, xin vui lòng tham khảo blog này. Đã trả lời ngày 5 tháng 10 năm 2017 lúc 5:53Oct 5, 2017 at 5:53
Truy vấn dưới đây sẽ hoạt động hoàn hảo cho cả số hàng chẵn hoặc số lẻ. Trong truy vấn con, chúng tôi đang tìm (các) giá trị có cùng số lượng hàng trước và sau nó. Trong trường hợp các hàng lẻ, mệnh đề có sẽ đánh giá thành 0 (cùng số lượng hàng trước và sau khi hủy bỏ dấu hiệu). Tương tự, đối với các hàng thậm chí, mệnh đề có đánh giá thành 1 cho hai hàng (các hàng trung tâm 2) vì chúng sẽ (tập thể) có cùng số lượng hàng trước và sau. Trong truy vấn bên ngoài, chúng tôi sẽ tìm ra giá trị đơn (trong trường hợp các hàng lẻ) hoặc (2 giá trị trong trường hợp các hàng chẵn). 3LƯU Ý: Trong trường hợp bảng của bạn có các giá trị trùng lặp, nên điều khoản có ở trên nên được thay đổi thành điều kiện bên dưới. Trong trường hợp này, có thể có các giá trị bên ngoài các khả năng ban đầu là 0,1. Điều kiện dưới đây sẽ làm cho điều kiện này động và hoạt động trong trường hợp trùng lặp. 4Đã trả lời ngày 7 tháng 11 năm 2020 lúc 18:14Nov 7, 2020 at 18:14
Thử một cái gì đó như: 5**
** Lưu ý: Lý do cho -1 là để làm cho nó không được lập chỉ mục..i.e số hàng hiện bắt đầu từ 0 thay vì 1Jan 18, 2021 at 10:08
Đã trả lời ngày 18 tháng 1 năm 2021 lúc 10:08 6Tôi đã không so sánh hiệu suất của giải pháp này với phần còn lại của các câu trả lời được đăng ở đây, nhưng tôi thấy đây là cách thẳng thắn nhất để hiểu, và bao gồm toàn bộ phạm vi của công thức toán học để tính toán trung bình. Nói cách khác, giải pháp này sẽ đủ mạnh mẽ cho các bộ dữ liệu được đánh số chẵn và lẻ:May 31, 2021 at 2:30
Đã trả lời ngày 31 tháng 5 năm 2021 lúc 2:30 7Đã trả lời ngày 6 tháng 6 năm 2021 lúc 6:26Jun 6, 2021 at 6:26
SudhanshusudhanshuSudhanshu 6148 Huy hiệu bạc22 Huy hiệu đồng8 silver badges22 bronze badges Nếu đây là MySQL, bây giờ có các chức năng cửa sổ và bạn có thể thực hiện theo cách này (giả sử bạn muốn làm tròn đến số nguyên gần nhất - nếu không chỉ cần thay thế 3 bằng 4 hoặc 5 hoặc bạn có gì). Giải pháp sau đây hoạt động cho các bảng bất kể chúng có số lượng hàng chẵn hay số lượng hàng lẻ: 8Tôi nghĩ rằng một số câu trả lời gần đây hơn về chủ đề này đã nhận được ở cách tiếp cận này, nhưng có vẻ như mọi người đã suy nghĩ quá mức, vì vậy hãy xem đây là một phiên bản cải tiến. Bất kể hương vị SQL là gì, không có lý do gì ai đó nên viết một đoạn mã khổng lồ với nhiều nhóm con chỉ để có được trung bình vào năm 2021. Tuy nhiên, xin lưu ý rằng truy vấn ở trên chỉ hoạt động nếu bạn được yêu cầu tìm trung vị cho một loạt liên tục. Tất nhiên, bất kể số lượng hàng, đôi khi mọi người tạo ra sự khác biệt giữa những gì được gọi là trung bình riêng biệt và những gì được gọi là trung bình nội suy cho một chuỗi liên tục.continuous series. Of course, regardless of row number, sometimes people do make a distinction between what is referred to as the Discrete Median and what is referred to as the Interpolated Median for a continuous series. Nếu bạn được yêu cầu tìm trung bình cho một chuỗi riêng biệt và bảng có số lượng hàng chẵn, giải pháp trên sẽ không hoạt động với bạn và bạn nên hoàn nguyên sử dụng một trong các giải pháp khác, như Thejacobtaylor.discrete series and the table has an even number of rows, the above solution will not work for you, and you should revert to using one of the other solutions, like TheJacobTaylor's. Giải pháp thứ hai dưới đây là phiên bản được sửa đổi một chút của Thejacobtaylor, nơi tôi nêu rõ 6. Điều này cũng sẽ hoạt động cho các bảng có số lượng hàng kỳ lạ, bất kể bạn có được yêu cầu tìm trung vị cho một chuỗi liên tục hay riêng biệt hay không, nhưng tôi sẽ sử dụng cụ thể nó khi được yêu cầu tìm trung vị của một chuỗi rời rạc. Nếu không, sử dụng giải pháp đầu tiên. Bằng cách đó, bạn sẽ không bao giờ phải suy nghĩ về việc dữ liệu có chứa số lượng dữ liệu 'chẵn' hay 'lẻ' hay không. 9Cuối cùng, bạn có thể dễ dàng thực hiện điều này trong PostgreSQL bằng cách sử dụng các chức năng tích hợp. Dưới đây là một lời giải thích tốt đẹp, cùng với một bản tóm tắt hiệu quả về các trung vị nội suy riêng biệt. https://leafo.net/guides/postgresql-calculating-percentile.html#calculating-the-median Đã trả lời ngày 20 tháng 6 năm 2021 lúc 19:38Jun 20, 2021 at 19:38
Đối với một trạm bảng và cột lat_n, đây là mã MySQL để có được trung bình: 0Đã trả lời ngày 23 tháng 9 năm 2021 lúc 12:46Sep 23, 2021 at 12:46
Bạn có thể sử dụng hàm window row_number () để trả lời truy vấn để tìm phương tiện 1Đã trả lời ngày 23 tháng 2 lúc 20:15Feb 23 at 20:15
2
Fabich 2.5563 huy hiệu vàng28 Huy hiệu bạc40 Huy hiệu đồng3 gold badges28 silver badges40 bronze badges Đã trả lời ngày 25 tháng 6 năm 2016 lúc 10:59Jun 25, 2016 at 10:59
0 |