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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

为什么会出现此错误:

错误:列“overall_count”不存在

我的表结构:

License(license_id, license_name, limit_call, create_date, expire_date)
Log(log_id, license_id, log, call_date)
  • 1.
  • 2.

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

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
  • 1.
  • 2.
  • 3.
  • 4.

所以你:

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

过滤出条件不匹配的组:

注意:您不能使用

HAVING     b.limit_call > ...
  • 1.

,除非您按

limit_call
  • 1.

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

MAX
  • 1.

:

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)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

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

COUNT(a.log_id)
  • 1.

表达式。 Postgres 会优化它。

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

​SELECT 列表​

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


分享
微博
QQ
微信
回复
2023-05-27 11:28:37
相关问题
HarmonyOS 大数科学计数
707浏览 • 1回复 待解决
HarmonyOS AtomicInteger 计数功能实现
768浏览 • 1回复 待解决
如何部署PolarDB for PostgreSQL
5081浏览 • 1回复 待解决
postgresql 如何插入含 ‘ 数据?
4397浏览 • 2回复 待解决
postgresql是否可以做表大小限制
4845浏览 • 1回复 待解决
PostgreSQL interval后跟字段的问题
5130浏览 • 2回复 待解决
PostgreSQL json 类型查询
5010浏览 • 2回复 待解决
HarmonyOS如何根据条件加载页面
892浏览 • 1回复 待解决
触发onWillScroll的条件都有哪些?
1577浏览 • 1回复 待解决
mysql 如何匹配多个 like 条件?
4523浏览 • 1回复 待解决
IF条件变化后UI不刷新
1402浏览 • 1回复 待解决
Postgresql 宿主机如何与Docker同步数据?
4972浏览 • 1回复 待解决
centos 6 安装 postgresql有知道的吗?
3164浏览 • 1回复 待解决
greenplum和postgresql之间是什么关系?
4809浏览 • 1回复 待解决
PostgreSQL insert 前判断是否存在?
5053浏览 • 2回复 待解决
postgresql 大量数据的统计问题?
2820浏览 • 2回复 待解决
postgresql 如何合并.bak内数据?
3295浏览 • 1回复 待解决