Làm cách nào để tìm giá trị thường xuyên nhất trong một cột nhất định trong bảng SQL?Tìm giá trị thường xuyên nhất trong cột SQL
Ví dụ, đối với bảng này nó sẽ trả về two
vì nó là giá trị thường gặp nhất:
one
two
two
three
Làm cách nào để tìm giá trị thường xuyên nhất trong một cột nhất định trong bảng SQL?Tìm giá trị thường xuyên nhất trong cột SQL
Ví dụ, đối với bảng này nó sẽ trả về two
vì nó là giá trị thường gặp nhất:
one
two
two
three
SELECT `value`,
COUNT(`value`) AS `value_occurrence`
FROM `my_table`
GROUP BY `value`
ORDER BY `value_occurrence` DESC
LIMIT 1;
Tôi nên làm gì nếu tôi cũng muốn chọn một trường khác từ 'my_table'? Nói cách khác, một giá trị khác; – grep
điều gì sẽ xảy ra nếu nhiều hơn một giá trị xuất hiện giống nhau không có thời gian (tối đa)? Trong trường hợp này, nếu ba cũng xuất hiện hai lần? LIMIT 1 sẽ chỉ hiển thị một bản ghi – mustafa1993
@ mustafa1993 'SELECT * TỪ my_table GROUP BY value ORDER BY count (*) DESC;' –
Hãy thử một cái gì đó như:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
Tôi không biết rằng bạn có thể sử dụng 'COUNT (*)' trực tiếp trong 'ORDER BY'. Tôi biết có một vài hạn chế về 'GROUP BY' /' HAVING' và các cột tổng hợp và tôi luôn giả định rằng nó sẽ không hoạt động. –
Để sử dụng với SQL Server.
Vì không có hỗ trợ lệnh giới hạn trong đó.
Yo có thể sử dụng 1 lệnh hàng đầu để tìm giá trị xảy ra tối đa trong cột cụ thể trong trường hợp (giá trị) này
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
Bạn cũng cần phải di chuyển COUNT chức năng để ORDER BY phần để tránh nhận được lỗi sau: Chỉ có thể chỉ định một biểu thức trong danh sách lựa chọn khi truy vấn phụ không được giới thiệu với EXISTS –
Chúng ta hãy xem xét tên bảng như tblperson
và tên cột như city
. Tôi muốn lấy lại thành phố lặp lại nhiều nhất từ cột thành phố:
select city,count(*) as nor from tblperson
group by city
having count(*) =(select max(nor) from
(select city,count(*) as nor from tblperson group by city) tblperson)
Đây nor
là tên bí danh.
Nếu bạn không thể sử dụng LIMIT hoặc LIMIT không phải là tùy chọn cho công cụ truy vấn của bạn. Bạn có thể sử dụng "ROWNUM" thay vào đó, nhưng bạn sẽ cần một truy vấn phụ:
SELECT FIELD_1, ALIAS1
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1
FROM TABLENAME
GROUP BY FIELD_1
ORDER BY COUNT(FIELD_1) DESC)
WHERE ROWNUM = 1
MySQL không có 'ROWNUM' – Barmar
Đây là hợp lệ cho oracle nhưng không mysql – Prabhu
@Prabhu trong MySQL, bạn sử dụng 'LIMIT 1' thay thế; cú pháp được hiển thị trong câu trả lời được chấp nhận. – ToolmakerSteve
Giả Bảng là 'SalesLT.Customer
' và cột bạn đang cố gắng tìm ra là 'CompanyName
' và AggCompanyName
là một Alias.
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
Dưới truy vấn dường như làm việc tốt cho tôi trong SQL cơ sở dữ liệu Server:
select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC
Kết quả:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
..
..
GROUP BY phiên bản: http://stackoverflow.com/questions/344665/get-most-common-value-in-sql –