PostgreSQL WHERE 计数条件

我在 PostgreSQL 中有以下查询:

SELECT 
    COUNT(a.log_id)     AS overall_count
    FROM 
    "Log"     as a, 
    "License"     as b 
    WHERE 
    a.license_id=7 
AND 
    a.license_id=b.license_id 
AND
    b.limit_call > overall_count
    GROUP     BY

为什么会出现此错误:

错误:列“overall_count”不存在

我的表结构:

License(license_id, license_name, limit_call, create_date, expire_date)
Log(log_id, license_id, log, call_date)

我想检查许可证是否已达到特定月份的调用限制。

sql
postgresql
having
2023-05-10 14:21:44
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
ycy856

纯条件计数(*):

SELECT COUNT(*) FILTER(    where a.myfield > 0)     AS my_count
        FROM "Log"     as a 

    GROUP     BY

所以你:

  • get
0
  • 对于条件永远不满足的组
  • 可以根据需要添加任意数量的 count(*) 列

过滤出条件不匹配的组:

注意:您不能使用

HAVING     b.limit_call > ...

,除非您按

limit_call

分组。但是您可以使用聚合函数将组中的许多“limit_calls”映射为单个值。例如,在您的情况下,您可以使用

MAX

:

SELECT COUNT(a.log_id)     AS overall_count
        FROM "Log"     as a 
        JOIN "License" b     ON(a.license_id=b.license_id)

    GROUP     BY a.license_id
      HAVING MAX(b.limit_call) > COUNT(a.log_id)

并且不要在意在第一行和最后一行中重复

COUNT(a.log_id)

表达式。 Postgres 会优化它。

分享
微博
QQ
微信
回复
2023-05-10 15:57:01
pgdba

​SELECT 列表​

一个输出列的名称可以被用来在​ORDER BY​以及 ​GROUP BY​子句中引用该列的值,但是不能用于 ​WHERE​​HAVING​子句(在其中 必须写出表达式)。


分享
微博
QQ
微信
回复
2023-05-27 11:28:37
相关问题
PostgreSQL json 类型查询
4131浏览 • 2回复 待解决
如何部署PolarDB for PostgreSQL
3988浏览 • 1回复 待解决
postgresql 如何插入含 ‘ 数据?
3767浏览 • 2回复 待解决
IF条件变化后UI不刷新
710浏览 • 1回复 待解决
mysql 如何匹配多个 like 条件?
3988浏览 • 1回复 待解决
触发onWillScroll的条件都有哪些?
632浏览 • 1回复 待解决
postgresql 如何合并.bak内数据?
2694浏览 • 1回复 待解决
PostgreSQL insert 前判断是否存在?
4203浏览 • 2回复 待解决
postgresql 大量数据的统计问题?
2267浏览 • 2回复 待解决
HarmonyOS如何根据条件加载页面
300浏览 • 1回复 待解决
PostgreSQL interval后跟字段的问题
4500浏览 • 2回复 待解决
postgresql是否可以做表大小限制
3942浏览 • 1回复 待解决
组件复用生效的条件有哪些?
290浏览 • 1回复 待解决
PolarDB for PostgreSQL是完全开源吗?
3201浏览 • 1回复 待解决
举例说明媒体条件查询如何使用
314浏览 • 1回复 待解决
postgresql中schema具体是干嘛用的?
4371浏览 • 1回复 待解决
UI组件怎样条件执行选项函数?
173浏览 • 1回复 待解决