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
相关问题
mysql 如何匹配多个 like 条件?
2213浏览 • 1回复 待解决
如何按照条件完成样式的链式调用
220浏览 • 1回复 待解决
如何部署PolarDB for PostgreSQL
1968浏览 • 1回复 待解决
BLE扫描条件设置的问题有知道的吗?
1321浏览 • 1回复 待解决
postgresql 如何插入含 ‘ 数据?
2006浏览 • 2回复 待解决
PostgreSQL json 类型查询
2156浏览 • 2回复 待解决
Redis 竞态条件的问题有知道的吗?
1628浏览 • 1回复 待解决
PostgreSQL interval后跟字段的问题
2378浏览 • 2回复 待解决
postgresql是否可以做表大小限制
2028浏览 • 1回复 待解决
postgresql 如何合并.bak内数据?
1101浏览 • 1回复 待解决
PostgreSQL insert 前判断是否存在?
1999浏览 • 2回复 待解决
postgresql 大量数据的统计问题?
694浏览 • 2回复 待解决
centos 6 安装 postgresql有知道的吗?
474浏览 • 1回复 待解决