Để có được số lượng thô
select window_height, count(*) totalusers
from tbl
group by window_height
order by totalusers desc # or by window_height
Để nhận giá trị trung bình theo phương thức (điều này sẽ hiển thị nhiều giá trị nếu có mối quan hệ cho số lượng cao nhất)
select window_height, totalusers
from (
select @r := if(totalusers>@r,totalusers,@r) maxcount, window_height, totalusers
from (select @r:=0) initvars, (
select window_height, count(*) totalusers
from tbl
group by window_height
) X ) Y
where totalusers = @r
Điều này sử dụng một thủ thuật MySQL là sử dụng một biến để lưu trữ số lượng tối đa khi nó đi qua truy vấn con tổng hợp. Tóm tắt hoạt động
- O (n):quét bảng một lần và tạo số lượng (T1)
- O (n):quét bảng dẫn xuất T1 và giữ số lượng cao nhất trong biến @r (T2)
- O (n):quét bảng dẫn xuất T2 và chỉ lọc các độ cao có số lượng cao nhất