2017-08-18 15 views
0

私はテーブルip、os、countryとbrowserを持つ "user"テーブルを持っています。私は、そこに最大count.Isで私が使用している現在のクエリがトップ検索国とipをテーブルから検索する

SELECT * 
FROM 
(
SELECT COUNT(ip),ip FROM user GROUP BY ip 
UNION ALL 
SELECT COUNT(os),os FROM user GROUP BY os 
UNION ALL 
SELECT COUNT(country),country FROM user GROUP BY country 
UNION ALL 
SELECT COUNT(browser),browser FROM user GROUP BY browser 
) user 

が、それはすべてのIP、OSを示しているPostgreSQLの

にそのための任意のクエリを、IP、OS、国やブラウザを見つけたいです国とブラウザとその数 私が本当に望んでいるのは、その列の最大数です。

これは単一のクエリで行うことは可能ですか?

この

os  count   ip    count 
linux  50   xx:xx:xx:xx  95 
+0

のために紹介しますは、MySQLやPostgreSQLを使用していますか?関与していない製品にはタグを付けないでください。 – jarlh

+0

2つのカテゴリに同じカウントがある場合はどうすればいいですか? –

+0

@ Vao Tsun別途表示されます –

答えて

2
SELECT * 
FROM 
    (SELECT COUNT(ip) as cnt_ip, ip FROM user GROUP BY ip ORDER BY 1 DESC LIMIT 1) as t_ip, 
    (SELECT COUNT(os) as cnt_os, os FROM user GROUP BY os ORDER BY 1 DESC LIMIT 1) as t_os, 
    (SELECT COUNT(country) as cnt_country, country FROM user GROUP BY country ORDER BY 1 DESC LIMIT 1) as t_country, 
    (SELECT COUNT(browser) as cnt_browser, browser FROM user GROUP BY browser ORDER BY 1 DESC LIMIT 1) as t_browser 
+0

このソリューションは、同じ数のアイテムを無視します –

+0

@RadimBačaはい、[コメント](https://stackoverflow.com/questions/45753241/finding-top-searched-country-and-ip-from-a -table/45754363?noredirect = 1#comment78465542_45753241)。 – Abelisto

1

あなたはそのためHAVINGALLを使用することのようなものを期待してイム。読みやすさの目的のために、私はちょうど1列

SELECT COUNT(ip),ip 
FROM user 
GROUP BY ip 
HAVING COUNT(ip) >= all 
(
    SELECT COUNT(ip) 
    FROM user 
    GROUP BY ip 
) 
+0

2列で私に見せることができますか? 私はいくつかの問題を抱えています –

+0

と各列の最大数またはすべての列の最大数が必要ですか?サンプルデータの出力例が役に立つかもしれません。 –

関連する問題