我需要知道表中的行数来计算百分比.如果总计数大于某个预定义常量,我将使用常量值.否则,我将使用实际的行数.
我可以用SELECT count(*) FROM table.但是如果我的常量值是500,000并且我的表中有5,000,000,000行,那么计算所有行会浪费很多时间.
一旦超过常数值,是否可以停止计数?
只要它低于给定的限制,我只需要确切的行数.否则,如果计数高于限制,我会使用限制值,并希望尽快得到答案.
像这样的东西:
SELECT text,count(*), percentual_calculus()
FROM token
GROUP BY text
ORDER BY count DESC;
Run Code Online (Sandbox Code Playgroud) 分页来自数据库的数据时,您需要知道将有多少页面呈现页面跳转控件.
目前我通过运行查询两次,一次包装count()以确定总结果,第二次应用限制以获取当前页面所需的结果.
这似乎效率低下.有没有更好的方法来确定在LIMIT应用之前会返回多少结果?
我正在使用PHP和Postgres.
psql控制台中有许多有用的快捷方式,如\d或\l.
我想知道有一个SELECT * FROM table_name吗?
我经常将这个查询用于学习目的,所以不必一直写select * from ....
核心需求:查找指定过滤条件, ,
的最新条目。可能有更多这样的过滤器,但无论如何,按提交日期返回最新的逻辑是相同的。有两个主要用途,一是在 UI 中分页查看,二是生成报告。person_idsubmission_datetypeplanstatus
WITH cte AS (
SELECT * FROM (
SELECT my_table.*, rank() OVER (PARTITION BY person_id ORDER BY submission_date DESC, last_updated DESC, id DESC) FROM my_table
) rank_filter
WHERE RANK=1 AND status in ('ACCEPTED','CORRECTED') AND type != 'CR' AND h_plan_id IN (10000, 20000)
)
SELECT
SELECT count(id) FROM cte group by id,
SELECT * FROM cte limit 10 offset 0;
Run Code Online (Sandbox Code Playgroud)
该方法group by也不适用于 CTE。计数查询中所有的联合null可能适用于组合,但不确定。
我想将这两个合并为1个查询的主要原因是因为表很大并且窗口函数很昂贵。目前我使用单独的查询,它们基本上都运行相同的查询两次。
Postgres 版本 12。 …