sql - 如何使用 Distinct ON 计数

标签 sql database postgresql

我有这个查询已经有效,我需要为此编写计数查询(需要分页),并且我在使用带有 DISTINCT ON 的计数时遇到问题,任何人都知道正确的语法和使用它的方法,我已经用谷歌搜索但没有能够找到任何带有 DISTINCT ON 的计数查询

结果我期望这个查询的总行数已经有效

select DISTINCT on (csd.team_contest_id)
        c.id as contestId
            from contest as c
            left join company_sponsor_team as csd on csd.contest_id = c.id
            left join sponsor as s on s.id = c.sponsor_id
            left join team as d on d.id = c.team_id
            left join player as m on c.creator_id = m.id
            WHERE c.id = c.id 
            AND ((c.team_id is not null and c.sponsor_id is null and lower(d.name) LIKE LOWER(CONCAT('%TAN%')))
            OR (c.team_id is not null and c.sponsor_id is not null and lower(s.name) LIKE LOWER(CONCAT('%TAN%')))
            OR (c.team_id is null and lower(s.name) LIKE LOWER(CONCAT('%TAN%')))) AND (CURRENT_DATE < c.archive_date)

最佳答案

如果要统计行数,使用子查询:

select count(*)
from ( <your query here> ) x;

如果你厌恶子查询,你总是可以这样做:

select count(distinct csd.team_contest_id)
from . . .  <the rest of your query here>;

假设 csd.team_contest_id 不是 NULL,这将返回相同的值。

关于sql - 如何使用 Distinct ON 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48141352/

相关文章:

python - 使用 INTERSECT 和 UNNEST 的 sqlalchemy

sql - Oracle 相当于 ROWLOCK、UPDLOCK、READPAST 查询提示

SQL Server : query database user roles for all databases in server

mysql - 如何选择具有相同外部列表(两个表)的记录?

mysql - 限制mysql表中的字符数

python - 仅当条目不存在时才将条目添加到数据库的正确方法;使用 python + peewee

c# - SQL查询多次返回同一条记录

sql - 计算祖先数组后代数量的最佳方法?

python - 使用 API 访问 sqlalchemy 中的关系表数据

sql - Oracle 将两行合并为一行