2011-11-08 66 views
3

我正在使用mysql 5.0.51b。 我有一個名爲xyz的表。 xyz表有一個列abc,位置,pqr和lmn 每次信息發送到特定的位置,其輸入是在xyz表中完成的。 我想要發送最大信息的位置的名稱。我想在mysql查詢中一起使用max和count聚合函數

我嘗試過的方式: 首先,我計算了使用計數和分組方式發送到每個位置的條目數量。 現在,問題是要有最大值的位置的名稱(S)。

我已經使用臨時解決方案: 我使用order by子句和limit來獲取具有最大值的第一條記錄。 但是這有一個問題 如果兩個地點有相同的計數,那麼上面的解決方案將只給一個位置,而另一個具有相同的計數將不會被返回。

我想解決這個問題 任何暗示將在預期非常有幫助 感謝

回答

3

非常感謝所有對我的問題做出迴應並保留解決問題時間的人。

不過,我已經得到了解決:在http://lists.mysql.com/mysql/203074

內部查詢爲您提供了最大計數和外部查詢比較每個與最大計數計數

SELECT count(*) AS cnt2, location 
FROM sms 
GROUP BY location 
HAVING cnt2 = (
SELECT count(*) AS cnt 
FROM sms 
GROUP BY location 
ORDER BY cnt DESC 
LIMIT 1); 

很重要的暗示。

+0

太棒了!不要忘記對您認爲有用的回覆進行投票。以有意義的方式表達您的感謝,鼓勵人們繼續響應您的未來要求。如果沒有直接回答您的問題的回覆,幾天後可以接受您自己的回答。接受答案有助於其他人在搜索類似問題時找到答案。歡迎來到堆棧溢出! –

0

試試這個有趣的解決方案 -

SELECT x.* FROM xyz x 
    JOIN (
    SELECT GROUP_CONCAT(location) locations FROM (
     SELECT location, COUNT(*) cnt FROM xyz GROUP BY location ORDER BY COUNT(*)) t 
    GROUP BY cnt DESC 
    LIMIT 1 
    ) t 
    ON FIND_IN_SET(x.location, t.locations); 
0
SELECT COUNT(*), `location` FROM `xyz` GROUP BY `location` 

上面的查詢將會給你的信息數爲具體位置。

如果這不是你正在尋找的,你能提供一些樣本數據和預期的輸出嗎?

2
Select MAX(cnt.Total) from 
(select count(Name)as Total from Gk_RegUser_answer_rel group by Reg_UserId) As cnt