问一个SQL语句该怎么写,一次列出字段中相同值出现的次数,并显示在增加的列中(不是算出现次数的和)
问一个SQL语句该怎么写。例如:idnamecounts(虚拟的一列)1XXX12YYY13YYY24XXX25ZZZ16XXX3...
问一个SQL语句该怎么写。例如:
id name counts(虚拟的一列)
1 XXX 1
2 YYY 1
3 YYY 2
4 XXX 2
5 ZZZ 1
6 XXX 3 展开
id name counts(虚拟的一列)
1 XXX 1
2 YYY 1
3 YYY 2
4 XXX 2
5 ZZZ 1
6 XXX 3 展开
3个回答
展开全部
这个很简单啊,根据你自己的这个要求可以看出,首先,你查出的数据id一直没变,name重复的也没去掉,只是多加了一个,counts字段。而counts用聚合函数就可以求出,因为你没去掉重复的那么聚合函数就不能放在前面了,因为它查出来的是一个——而你重复是二个以上的,不对应,你把聚合查询到的和其它要的当两个张表来查询就可以了。你可以这样写
select id,name,c.* from 你的表名,(select count(name) counts from 你的表名) c
这里的counts是任意的,相当于一个别名,显示的效果就是你要加入的那列的字段名。
select id,name,c.* from 你的表名,(select count(name) counts from 你的表名) c
这里的counts是任意的,相当于一个别名,显示的效果就是你要加入的那列的字段名。
展开全部
给你个示例看下吧,主要是rank函数的使用,本例支持2005及以上版本。
with yy as
(
select 1 id,'a' name
union all
select 2,'a'
union all
select 3,'b'
union all
select 4,'c'
union all
select 5,'b'
union all
select 6,'a'
)
select id, name
,RANK() over(partition BY name order by id) counts
from yy
order by id
with yy as
(
select 1 id,'a' name
union all
select 2,'a'
union all
select 3,'b'
union all
select 4,'c'
union all
select 5,'b'
union all
select 6,'a'
)
select id, name
,RANK() over(partition BY name order by id) counts
from yy
order by id
更多追问追答
追问
with yy as
(
select 1 id,'a' name
union all
select 2,'a'
union all
select 3,'b'
union all
select 4,'c'
union all
select 5,'b'
union all
select 6,'a'
)这段代码是啥意思?
追答
使用 查询语句,建一个公用表表达式。你可以把它当做临时表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT *, Row_Number() OVER (partition by NAME ORDER BY id asc) counts FROM NAMES order by id
追问
您好 如果要是给一个字段中相同的值排序要怎么写?
姐姐 帮个忙
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询