问一个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
展开
 我来答
409567402
2012-06-01 · 超过16用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:32.8万
展开全部
这个很简单啊,根据你自己的这个要求可以看出,首先,你查出的数据id一直没变,name重复的也没去掉,只是多加了一个,counts字段。而counts用聚合函数就可以求出,因为你没去掉重复的那么聚合函数就不能放在前面了,因为它查出来的是一个——而你重复是二个以上的,不对应,你把聚合查询到的和其它要的当两个张表来查询就可以了。你可以这样写
select id,name,c.* from 你的表名,(select count(name) counts from 你的表名) c
这里的counts是任意的,相当于一个别名,显示的效果就是你要加入的那列的字段名。
yiyishuitian
2012-05-29 · TA获得超过644个赞
知道小有建树答主
回答量:721
采纳率:50%
帮助的人:525万
展开全部
给你个示例看下吧,主要是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'
)这段代码是啥意思?
追答
使用 查询语句,建一个公用表表达式。你可以把它当做临时表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乖乖的小莹儿
2012-05-29
知道答主
回答量:25
采纳率:0%
帮助的人:14.5万
展开全部
SELECT *, Row_Number() OVER (partition by NAME ORDER BY id asc) counts FROM NAMES order by id
追问
您好  如果要是给一个字段中相同的值排序要怎么写?
姐姐 帮个忙
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式