代码之家  ›  专栏  ›  技术社区  ›  Amirshk

关于SQL查询的帮助

  •  0
  • Amirshk  · 技术社区  · 16 年前

    activity 包含两列:

    when as datetime // last time i saw a user
    guid as varchar  // a unique identifier for each user
    

    Guid由客户端创建。

    guid 首次出现在活动表中。

    如何在单个SQL语句中实现这一点?

    更新 : 在用户使用资源之前,我并没有他的guid,表中也并没有他的条目。

    结果 :

    谢谢大家,这帮了大忙。对于任何感兴趣的人,以下是我根据您的所有建议编写的内容:

    SET @duration=7;
    SELECT COUNT(distinct guid) AS total_new_users FROM `activity`
        WHERE `when` >= DATE_SUB(CURDATE(),INTERVAL @duration DAY) AND guid NOT IN
        (
            SELECT guid
            FROM `activity`
            WHERE `when` < DATE_SUB(CURDATE(),INTERVAL @duration DAY)
        );
    
    5 回复  |  直到 16 年前
        1
  •  4
  •   curtisk    16 年前
    select count(guid)as total_new_users
    from activity
    where when >= {last day/week/month}
    and guid not in(select guid
    from activity
    where when < {last day/week/month})
    
        2
  •  2
  •   Jim Garrison    16 年前

    我想你想要的是:

    select count(*) from (
      select guid,min(when) as first from activity group by guid 
      having first between curdate()-interval 7 day and curdate() )
    

        3
  •  1
  •   theShingles    16 年前
    SELECT COUNT(DISTINCT guid) 
    FROM activity
    WHERE guid NOT IN (
        SELECT DISTINCT guid FROM activity WHERE when < CURDATE() - INTERVAL 7 DAYS
    )
    AND when BETWEEN CURDATE() AND CURDATE() - INTERVAL 7 DAYS;
    

    将7天更改为多长时间。

        4
  •  0
  •   adamcodes    16 年前

        5
  •  0
  •   Jacob Schoen    16 年前
    SELECT COUNT(DISTINCT guid) 
    FROM ACTIVITY 
    WHERE when BETWEEN CURDATE() AND CURDATE() - INTERVAL 7 DAYS
      AND guid NOT IN (SELECT distinct GUID FROM ACTIVITY WHERE when < (CURDATE() -7 DAYS))