SQL按条件汇总求和

求SQL语句表ApointmarkAccount201John300Allen101Allen151John200Michael250John希望汇总计算出出如下表Poi... 求SQL语句
表A
point mark Account
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John
希望汇总计算出出如下表
Point_0 Point_1 Account
25 35 John
30 10 Allen
20 0 Michael
其中,point_0和point_1分别是以表A的Mark为0和1分类,然后Account相同者汇总求和
首先 实际表里面Account一列有几万条记录,不仅仅只有3个人,其中每个人都可能存在几十上百条记录
因此语句中不可能把几千个不同的人一一列举

M888的语句不能得到正确的结果,你的结果不能按人进行求和,得到的结果只是按mark的0和1进行了求和而已,所有人的答案都是相同的错的
展开
 我来答
59分粑粑分享生活
高粉答主

2020-04-30 · 专注生活好物分享,解答日常方方面面的问题
59分粑粑分享生活
采纳数:326 获赞数:119833

向TA提问 私信TA
展开全部

如下:

1、第一步,将示例表导入SQL语句中,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,输入生成代码“SELECT  * FROM student WHERE student.name LIKE'%涛涛%'”用于模糊查询,见下图,转到下面的步骤。

3、第三步,完成上述步骤后,输入代码“SELECT  COUNT(*)FROM student”对总数进行计数,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,根据年龄条件,可以使用“SELECT  SUM(age)FROM student”公式来计算总和,见下图。这样,就解决了这个问题了。

做一个快乐的茶农
高粉答主

2019-11-11 · 每个回答都超有意思的
知道答主
回答量:1396
采纳率:100%
帮助的人:35.1万
展开全部

1、首先在SQL语句中中导入样表。

2、输入代码:

SELECT * FROM student WHERE student.name LIKE '%涛涛%'进行模糊查询。

3、接着输入代码:SELECT COUNT(*)  FROM student ,进行总数统计。

4、按照年龄条件,运用SELECT SUM(age) FROM student 公式进行求和即可。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔驰M888
推荐于2017-11-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2706万
展开全部
select sum(case when mark = 0 then point else 0 end) as Point_0,
sum(case when mark = 1 then point else 0 end) as Point_1,
Account
from 表A
group by Account;

***************
我从不辩解,测试log自己看:
[TEST@ORA1] SQL>select * from 表A;

POINT MARK ACCOUNT
---------- ---------- ----------
20 1 John
30 0 Allen
10 1 Allen
15 1 John
20 0 Michael
25 0 John

6 rows selected.

[TEST@ORA1] SQL>select sum(case when mark = 0 then point else 0 end) as Point_0,
2 sum(case when mark = 1 then point else 0 end) as Point_1,
3 Account
4 from 表A
5 group by Account;

POINT_0 POINT_1 ACCOUNT
---------- ---------- ----------
30 10 Allen
25 35 John
20 0 Michael

[TEST@ORA1] SQL>

---
以上,希望对你有所帮助。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e6ea01f
2009-09-16 · TA获得超过449个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:542万
展开全部
declare @t table(point int, mark varchar(1), Account varchar(10))
insert into @t
select 20,'1','John' union
select 30,'0','Allen' union
select 10,'1','Allen' union
select 15,'1','John' union
select 20,'0','Michael' union
select 25,'0','John'

select * from @t

select
isnull(sum(case mark when '0' then point end),0) point_0,
isnull(sum(case mark when '1' then point end),0) point_1,
Account
from @t
group by account

------------------------
(6 个资料列受到影响)
point mark Account
----------- ---- ----------
10 1 Allen
15 1 John
20 0 Michael
20 1 John
25 0 John
30 0 Allen

(6 个资料列受到影响)

point_0 point_1 Account
----------- ----------- ----------
30 10 Allen
25 35 John
20 0 Michael
警告: 汇总或其他 SET 作业已删除 Null 值。

(3 个资料列受到影响)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式