有效的列的不同元素的全部计数
需要在列中选择具有相同值的多个行,以及与不同值的分页的全面计数。
但是,想从data_set 中避免使用选择
选择计数(DISTICT(DEPT_NAME)),因为它将扫描所有记录。
在下面的示例中,我使用 row_no
根据分页获取多个记录,在应用程序层中,我将分组 dept_a-> list< name,age>
。还需要完全计数来确定目前的潜在页面数量。
有没有一种方法可以在Postgres中使用窗口函数或其他任何其他方式获取完整的计数?
表:
dept_name | name | age
-----------+--------+-----
dept_a | name11 | 10
dept_a | name12 | 11
dept_a | name13 | 10
dept_a | name14 | 12
dept_a | name15 | 11
dept_b | name21 | 10
dept_b | name22 | 11
dept_b | name23 | 10
dept_b | name24 | 12
dept_b | name25 | 11
预期输出:
dept_name | name | age | row_no | count
-----------+--------+-----+--------+-------
dept_a | name11 | 10 | 1 | 2
dept_a | name12 | 11 | 1 | 2
dept_a | name13 | 10 | 1 | 2
dept_a | name14 | 12 | 1 | 2
dept_a | name15 | 11 | 1 | 2
可以给出结果但需要从data_set 中使用选择
。选择计数(DISTICS(DEPT_NAME))。
> dept_name count(1)over()作为full_count
,将完整计数作为 10
,因为它考虑了所有行,而不是 dintife
WITH row_no_tab AS (
SELECT *,
DENSE_RANK() OVER (
ORDER BY
ds.dept_name
) AS row_no
FROM data_set ds
)
SELECT
*
FROM
row_no_tab
CROSS JOIN (
SELECT COUNT(DISTINCT(dept_name)) FROM data_set
) AS distinct_count
WHERE
row_no > 0
AND row_no <= 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论