楼主: 大葱1992
1950 7

[基础问题] 有偿求助,SQL的题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
715 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
147 点
帖子
13
精华
0
在线时间
49 小时
注册时间
2012-9-9
最后登录
2021-6-7

楼主
大葱1992 发表于 2018-12-19 02:51:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大神好,刚刚接触sql,有道题不大会,想请教一下,数据如下:

姓名       课程        分数
张三       105         97
张三       108         65
李四       105         92
李四       108        70
赵五       105        93
赵五       108        97

问题:查询 课程105 的分数高于 课程108 的分数的学生姓名

数据源代码:
CREATE TABLE SCORE (NAME VARCHAR(10), COURSE VARCHAR(3), DEGREE NUMERIC(10,1));
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('ZHANGSAN','105',97);
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('ZHANGSAN','108',65);
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('LISI','105',92);
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('LISI','108',70);
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('ZHAOWU','105',93);
INSERT INTO SCORE(NAME,COURSE,DEGREE) VALUES ('ZHAOWU','108',97);



会的大神可以加一下我的微信:dacong593606,回头发红包;或者我手上有正版的《SQL必知必会(第四版)》,虽然我觉得大神们应该不需要了···哈哈;总之,谢谢各位!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:源代码 数据源

沙发
kejiayuan0806 在职认证  发表于 2018-12-27 17:21:28
自连接

藤椅
大葱1992 发表于 2019-1-2 23:48:34
kejiayuan0806 发表于 2018-12-27 17:21
自连接
好的,谢谢你!祝新年快乐~

板凳
escaflowne1985 在职认证  发表于 2019-1-10 16:46:50
自连接创建一个筛选就可以了

报纸
kejiayuan0806 在职认证  发表于 2019-1-25 17:13:12
select t_score.name
from (
select name,sum(case when course='105' then degree else 0 end) as A,
                        sum(case when course='108' then degree else 0 end) as B from score group by name) as t_score
where A>B;

亲测有效
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
大葱1992 + 1 + 1 + 1 精彩帖子
cnpro + 5 + 1 + 1 + 1 认真负责

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

地板
大葱1992 发表于 2019-2-14 09:31:20
谢谢大伙儿,抱歉才来回复,已经会了,谢谢!

7
guzhentiancai 发表于 2024-11-12 14:32:29
select
x.`姓名`
from (
select
a.`姓名`,
a.`成绩`
from 表名 a
where a.`课程`='105')x
inner join
(
select
b.`姓名`,
b.`成绩`
from 表名 b
where a.`课程`='108'
)y
on x.`姓名`=y.`姓名`
where a.`成绩`>b.`成绩`

8
flyman150 发表于 2025-2-8 15:39:09
SELECT 姓名
FROM (
    SELECT 姓名,
           MAX(CASE WHEN 课程=105 THEN 分数 END) AS score_105,
           MAX(CASE WHEN 课程=108 THEN 分数 END) AS score_108
    FROM 成绩表
    GROUP BY 姓名
) AS temp
WHERE score_105 > score_108;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-20 05:50