【问题标题】:MySQL Count values based on multiple columnsMySQL Count 基于多列的值
【发布时间】:2010-12-11 18:08:08
【问题描述】:

我有两个表:一个具有“等级”和“用户 ID”列的“用户列表”,以及一个记录用户每次登录时间的“登录”表。登录表有一个“用户 ID”列与“用户 ID”相关联。每次用户登录时,该登录表都会插入一行,因此如果用户登录 3 次,则该表将添加 3 行。

我需要运行一个查询,返回每个年级发生的唯一登录次数。

即:grade0 = 20 次登录,grade1 = 30 次登录

我感觉它是 DISTINCT、COUNT 和 GROUP BY 的组合,但我无法正确理解...

这个查询是错误的:

SELECT DISTINCT(userID), COUNT(*) as count, u.grade FROM userlist as u, login as l WHERE u.userID = l.userID GROUP BY u.grade, u.userID

返回的不是唯一的登录,而是所有的登录(即,如果用户登录两次,则计算两次)。

【问题讨论】:

    标签: sql mysql count group-by distinct


    【解决方案1】:
    select u.grade
         , count(distinct l.userid)
      from userlist u
      join login l
        on l.userid = u.userid
    group
        by u.grade
    

    【讨论】:

    • 完美!这正是我所需要的。谢谢。
    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多