A. 大神,求助!!!!sql的问题。Sqlserver,如何只取记录前10的数据,并且把其他数据的值求和成一条记录
你可以先根据值得大小进行降序排序,在添加row_number来多出序号一列,然后取前10 的序号值,最后用UNION将两条语句结果合并。请参考下列code:
declare@ttable
(namevarchar(1),valueint)
insertinto@tvalues
('A',15),
('B',10),
('C',20),
('D',5),
('E',7);
;WITHCteAS
(
SELECT*,ROW_NUMBER()OVER(ORDERBYVALUEdesc)RNFROM@T
)
SELECTname,valueFROMCTEWHERERN<=3
UNIONALL
SELECT'Others',sum(value)fromctewherern>3
B. SQL 相同项求和
第一种按照分组求和就可以了
SELECT ID, SUM(NUM)
FROM tab
GROUP BY ID
第二种
SELECT tab.ID, t2.NUM
FROM tab LEFT JOIN
(SELECT ID, SUM(NUM) AS NUM FROM tab GROUP BY ID) t2
ON tab.ID = t2.ID
C. sql合并重复数据并求和
***********************
根据你的补充补充回答:
***********************
select a,sum(b) as 记录数,max(c) as c
from 表名
group by a;
---
以上,希望对你有所帮助。
D. 请教一个sql去重排序求和的问题
我理解太差了,没有看明白……
取和最大的前两名
selecttop2namefrom(
selectname,sum(num)nfromtable
groupbyname)t
wheret.ndesc
不包含前两名的所有人
selectnamefromtable
wherenamenotin(
selecttop2namefrom(
selectname,sum(num)nfromtable
groupbyname)t
wheret.ndesc
)
名字取出了,那么现在就求和,前面的只是给你看看,最终综合成下面这样的一条语句,如果你需要效率高点,将notin修改为notexists,还有,你给的东东也不全,我就按照大概意思手打出来的,要是有错误,见谅,但是思路和这个差不多,你看看是不是你要的
前两名分组求和
selecttop2name,nfrom(
selectname,sum(num)nfromtable
groupbyname)t
wheret.ndesc
unionall
其他的求和,使用union链接
select'其他',
(selectsum(num)fromtable
where
namenotin(
selecttop2namefrom(
selectname,sum(num)nfromtable
groupbyname)t
wheret.ndesc
))
E. 怎么用sql查询班级前十名成绩的同学的姓名和分数(成绩相同的学生算同一个名次)
select name,score from (
select name,score,dense_rank() over(order by score) "row" from t )
where "row"=10
F. SQL语句 同相同字段求和排序
你看一下
,是这个
那个
sum(PCOUNT)as
sumcount是给sum(PCOUNT)起一个别名列名叫sumcount,
useinfo2
是你的表名吧,要是不是你就换一下你的表名。
select
sum(PCOUNT)as
sumcount,PNO
from
useinfo2
group
by
PNO
order
by
sumcount
答案补充
select
sum(pcount),
u.pno
from
useinfo2
as
u
inner
join
phoneinfo
as
p
on
u.pno=p.pno
group
by
u.pno
答案补充
select
sum(pcount),
u.pno
,p.pbrand,p.pname,p.ptype,p.pcost,p.count,p.pabout,p.ppic,p.logtime
from
useinfo2
as
u
inner
join
phoneinfo
as
p
on
u.pno=p.pno
group
by
u.pno
,p.pbrand,p.pname,p.ptype,p.pcost,p.count,p.pabout,p.ppic,p.logtime
G. sql语句,去重复,求和值
SELECT SUM(b) FROM (SELECT DISTINCT * FROM A)
对于表中两行记录完全一样的情况,可以用下面语句获取到去掉重复数据后的记录:
select distinct * from 表名
将查询的记录放到临时表中
H. sql重复行数据去重求和
select a,b,count(c) as c1,sum(d) as d1 --C列计数多少个,D列以A,B列为基准求和
from tablename --tablename为表名
group by a,b --以A,B列为基准