gpt4 book ai didi

sql - 如何选择所有列并从表中计数?

转载 作者:行者123 更新时间:2023-11-29 13:39:09 26 4
gpt4 key购买 nike

我正在尝试选择表 top_teams_team 中的所有列,并获取 hash_value 列的值计数。此处的 sql 语句部分起作用,因为它返回两列,hash_valuetotal。我仍然希望它也给我表格的所有列。

select hash_value, count(hash_value) as total
from top_teams_team
group by hash_value

在下面的 sql 语句中,它给了我所有的列,但是显示了重复的 hash_value,这不是我想要的。我尝试将 distinct 关键字放入,但它无法正常工作,或者我没有将它放在正确的位置。

select *
from top_teams_team
inner join (
select hash_value, count(hash_value) as total
from top_teams_team
group by hash_value
) q
on q.hash_value = top_teams_team.hash_value

最佳答案

窗口函数与 DISTINCT ON 的组合可能会满足您的需求:

SELECT DISTINCT ON (hash_value)
*, COUNT(*) OVER (PARTITION BY hash_value) AS total_rows
FROM top_teams_team
-- ORDER BY hash_value, ???
;

DISTINCT ON 在窗口函数之后 应用,因此 Postgres 首先计算每个不同 hash_value 的行数,然后再选择每组的第一行(包括. 那算)。

查询从每个组中选取任意行。如果您想要一个特定的,请相应地添加 ORDER BY 表达式。

这不是hash_value 列的值计数”,而是每个不同hash_value 的行计数>。我想这就是你的意思。

详细解释:

根据未公开的信息,可能会有(多)更快的查询样式......

关于sql - 如何选择所有列并从表中计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com