簡體   English   中英

SQL在一個列中計算最常用的值,其中另一列等於某值。

[英]SQL Count most used value in one column where other column equals something.

這有點奇怪,我不知道該如何寫標題,請多多包涵。

因此,我有一個像這樣的表,用於存儲有關不同作業的數據:

id | company | contact
----------------------
0  |  name1  |  Bob
1  |  name1  |  Mark
2  |  name3  |  Sam
3  |  name1  |  Bob
4  |  name2  |  Nigel
5  |  name1  |  Bob
6  |  name3  |  Donald
7  |  name1  |  Sandy
8  |  name3  |  Nigel

是否有SQL查詢,我可以使用該查詢表查詢特定公司的最常用聯系人。

因此,我要尋找的理論代碼將類似於:

SELECT "Most Commonly used Contact" FROM table WHERE company = "$company";   

是否可以在單個查詢中進行,還是這是一個多查詢工作?

試試這個SQL查詢...

SELECT *, COUNT(*) AS total 
FROM table 
WHERE company = '$company'
GROUP BY contact 
ORDER BY total DESC
LIMIT 1

基本上,您想查找每個公司分組的聯系人數量,然后再按實際聯系人分組。 換句話說:

SELECT COUNT(`id`) as num_contacts, `contact`, `company` FROM `jobtable` GROUP BY `company`, `contact` ORDER BY `company`, num_contacts DESC

或對於單個公司:

SELECT COUNT(`id`) as num_contacts, `contact` FROM `jobtable` WHERE `company`='$company' GROUP BY `contact` ORDER BY num_contacts DESC

如果您不能使用LIMIT(例如,如果您正在使用Oracle數據庫),則為您提供$ company的最常用聯系人:

SELECT contact, used_by
FROM (
  SELECT contact, COUNT(*) AS used_by
  FROM table
  WHERE company = $company
  GROUP BY contact
) t
HAVING used_by = MAX(used_by)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM