【问题标题】:How do I use 'id' results of a COUNT, GROUP BY, and HAVING query to perform another query with only those ids如何使用 COUNT、GROUP BY 和 HAVING 查询的“id”结果来执行另一个只有这些 id 的查询
【发布时间】:2021-11-24 03:32:27
【问题描述】:

我有一个有 32 个 id 的表,每个 id 应该有 31 行(31 个日期)。我只想为少于 31 行(31 个日期)的 id 选择 id 及其所有日期。

我已经尝试过这个和其他一些东西:

SELECT id, date
FROM daily_activity
WHERE id IN(SELECT id, COUNT(id) AS num_days
            FROM daily_activity
            GROUP by id
            HAVING num_days < 31)"
ORDER BY id, date

谢谢

【问题讨论】:

    标签: sql count subquery aggregate having


    【解决方案1】:

    一种解决方案是使用count 作为window function

    with ids as (
        select *, Count(*) over(partition by id) tot
        from mytable
    )
    select id, date
    from ids
    where tot<31
    

    【讨论】:

      【解决方案2】:

      你可以试试这个,也许它对你有用:

      SELECT id, date
      FROM daily_activity
      where( select COUNT(daily_activity2.id) 
                  FROM daily_activity daily_activity2 
                   where daily_activity.id=daily_activity2.id 
                   group by daily_activity2.id ) < 31
      ORDER BY id, date
      

      【讨论】:

      • 是的,也可以,谢谢!
      猜你喜欢
      • 2016-10-11
      • 2010-11-30
      • 2021-04-25
      • 1970-01-01
      • 2018-10-17
      • 2020-09-23
      • 1970-01-01
      • 2021-12-19
      • 2017-02-24
      相关资源
      最近更新 更多