【问题标题】:Mysql count on multiple columnsMysql 计算多列
【发布时间】:2012-09-06 03:21:28
【问题描述】:

在写这个查询时,我已经把头撞在墙上几个小时了。我有两张桌子。我想选择在某个日期玩游戏的次数,但每个用户只计算一个游戏。比如 2011 年 Ping Ping 玩了 3 次,但只有 2 个用户,所以我想返回的总数是 2。

会话表

DATE    GAME_ID     USER_ID
2011      1           1
2011      2           1
2011      1           1
2011      1           2
2011      2           2
2012      1           1
2012      1           1

游戏桌

ID      NAME
1       PING PONG
2       TENNIS

到目前为止,我真的很挣扎。这个 sn-p 返回唯一的时间,但不限于日期。

SELECT DISTINCT GAME_ID,USER_ID FROM SESSIONS

我知道如何将查询限制为日期等,但在两列的计数方面遇到了困难,我是否必须将上面的查询传递给计数函数?

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    您要做的是计算给定日期的不同用户数:

    select g.name, count(distinct s.user_id) as NumUsers
    from sessions s join
         games g
         on s.game_id = g.id
    where date = <whatever your date>
    group by g.name
    

    【讨论】:

    • 感谢您的帮助,您让我的电脑免于飞行!
    【解决方案2】:

    您将希望在 user_id 上使用 group by 子句

    http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

    【讨论】:

      【解决方案3】:

      使用内联查询:

      select DATE, GAME_ID, count(*) from (
      SELECT distinct s.DATE, s.GAME_ID, s.USER_ID
      FROM SESSIONS s
      INNER JOIN GAMES g ON s.GAME_ID =g.ID ) inn
      group by DATE, GAME_ID
      

      如果需要,将 DATE 上的 WHERE 添加到内联查询中。

      【讨论】:

        【解决方案4】:

        此查询显示在特定日期玩特定游戏的用户数,

        SELECT GAME_ID, USER_ID, COUNT(DISTINCT USER_ID) FROM SESSIONS 
        GROUP BY DATE, GAME_ID, USER_ID;
        

        这个查询是在这个时候显示相同的结果而不是显示game_id我们显示game_name

        SELECT Q2.USER_ID, Q2.nbr_user, GAMES.NAME FROM GAMES, 
                 (SELECT GAME_ID, USER_ID, COUNT(DISTINCT USER_ID) as nbr_user
                  FROM SESSIONS 
                  GROUP BY DATE, GAME_ID, USER_ID) Q2
        WHERE GAMES.ID = Q2.GAME_ID
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-15
          • 2013-09-11
          • 2012-01-23
          相关资源
          最近更新 更多