0 sql t-sql sql-server join window-functions
我已经在各种网站上阅读了有关该count()功能的信息,但我仍然无法完成这项工作。
我用(id、name、last name、age)做了一个小表,我需要检索所有列加上一个新列。在这个新列中,我想显示名称在表格中出现或重复的次数。
我已经进行了测试,但只能检索带有计数列的 COLUMN NAME,但我无法从表中检索所有数据。
目前我有这个
select a.n_showsup, p.*
from [test1].[dbo].[person] p,
(select count(*) n_showsup
from [test1].[dbo].[person])a
Run Code Online (Sandbox Code Playgroud)
这给了我关于输出的所有数据,但在 n_showsup 列上,它只给了我行数,现在我知道这是因为我缺少一个 GROUP BY 但是当我写 group by NAME 时,它向我显示了很多记录。这是我需要的一个例子:

您可以使用窗口函数,如果您的 RDBMS 支持它们:
select t.*, count(*) over(partition by name) n_showsup
from mytable t
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用聚合查询连接该表,该查询计算每个名称的出现次数:
select t.*, x.n_showsup
from mytable t
inner join (select name, count(*) n_showsup from mytable group by name) x
on x.name = t.name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |