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

选择总记录数和不同记录数

  •  0
  • Bagzli  · 技术社区  · 7 年前

    PalmId | UserId | CreatedDate
    1      | 1      | 2018-03-08 14:18:27.077
    1      | 2      | 2018-03-08 14:18:27.077
    1      | 3      | 2018-03-08 14:18:27.077
    1      | 1      | 2018-03-08 14:18:27.077
    

    我想知道有多少日期是为Palm 1创建的,我也想知道有多少用户为Palm 1创建了这些日期。因此,第一种方法的结果是 4 第二个结果是 3

    SELECT MT.[PalmId], COUNT(*) AS TotalDates, T1.[TotalUsers]
    FROM [MyTable] MT
        LEFT OUTER JOIN (
            SELECT MT2.[PalmId], COUNT(*) AS TotalUsers
            FROM [MyTable] MT2
            GROUP BY MT2.[UserId]
        ) T1 ON T1.[PalmId] = MT.[PalmId]
    GROUP BY MT.[PalmId], T1.[TotalUsers]
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   DDS    7 年前

    根据第一个表,您可以这样做:

    select count(distinct uerid) as N_Users, 
           count(created_date) as created_date, -- if you use count(*) you consider also rows with 'NULL'
           palmid
    from your_table
    group by palmid 
    
        2
  •  0
  •   Gordon Linoff    7 年前

    如果你想要“4”和“3”,那么我认为你想要:

    SELECT MT.PalmId, COUNT(*) AS NumRows, COUNT(DISTINCT mt.UserId) as NumUsers
    FROM MyTable MT
    GROUP BY MT.PalmId