SQL-最高计数(column1)w.r.t不同的column2

时间:2016-07-19 05:53:12

标签: mysql sql

我有一个包含三列的表,

| User_id (INT) | CountryCode (VARCHAR) | channel_accessed (VARCHAR) |

这里没有主键,因此所有列都可以重复。

我想编写一个返回Top国家名称&的SQL查询有相应的计数w.r.t唯一的User_id

尝试了这个Using group by on multiple columns,但这对我没什么帮助。

示例数据:

| User_id (INT) | CountryCode (VARCHAR) | channel_accessed (VARCHAR) |
 1                  US                      ARY
 2                  CA                      ARY
 3                  CA                      MTV
 2                  CA                      HUMTV
 4                  US                      Tensports
 5                  US                      Star Sports
 2                  CA                      PTV
 2                  CA                      QTV
 2                  CA                      NATGEO

预期结果:美国,因为它拥有更多独特用户。

2 个答案:

答案 0 :(得分:0)

试试这个:

select CountryCode
from yourtable
group by CountryCode
order by count(distinct User_id) desc
limit 1

SQLFiddle Demo

答案 1 :(得分:-1)

如果channel_accessed列并不重要,那么您可以尝试

SELECT CountryCode, MAX(user_count)
FROM (SELECT CountryCode,
             COUNT(DISTINCT(user_id)) as user_count
    FROM table_name
    GROUP BY CountryCode)