sql

更新时间:2023-05-14 14:33:13 阅读: 评论:0

filed,a,b,c,d,e是六个字段,field是标识一行的主键,a,b,c,d,e是五个要排序的,则每一行的a,b,c,d,e这字段顺序的值是无序的,现在要把这一行的值进行排序,并依次写到a,b,c,d,e字段的顺序.
这是我的理解.不过原题就是这个样子.
QUOTE:
--------------------------------------------------------------------------------
最初由 cttctt 发布
现有一tab
内容如下:
fied      a  b  c  d  e
record1    2  1  4  5  3
record2    4  2  3  1  5
如何写SQL能使每条记录都能是从小到大排列
也就是    1  2  3  4  5
1  2  3  4  5
这个我都没有什么思路,是用ca语句可以解决吗?
--------------------------------------------------------------------------------
六个字段?
a .. e 5个字段的的数据显示只按大小顺序, 不按数据是否是这个字段吗?
lect fied, 1 a, 2 b, 3 c, 4 d, 5 e from lztab
lect fied,
sum(decode(therow ,1,val)),
sum(decode(therow ,2,val)),锦州干豆腐
sum(decode(therow ,3,val)),
sum(decode(therow ,4,val)),
sum(decode(therow ,5,val)) from (
lect fied ,val ,row_number()  over (PARTITION BY ff.fied ORDER BY ff.val ) theRow
from (
lect  fied , decode(rn, 1, a, 2, b, 3, c,4,d,5,e)  val
from tt_temp1, (lect level rn from dual connect by 1=1 and level <=5)
) ff)
group by fied
QUOTE:
--------------------------------------------------------------------------------
持节云中下一句最初由 piliskys 发布
lect fied,
sum(decode(therow ,1,val)),
酱爆田螺sum(decode(therow ,2,val)),
sum(decode(therow ,3,val)),
sum(decode(therow ,4,val)),
sum(decode(therow ,5,val)) from (
lect fied ,val ,row_number()  over (PARTITION BY ff.fied ORDER BY ff.val ) theRow
from (
lect  fied , decode(rn, 1, a, 2, b, 3, c,4,d,5,e)  val
from tt_temp1, (lect level rn from dual connect by 1=1 and level <=5)
) ff)
group by fied
-------------------------------------------
搞的很复杂,不清楚是不是这个意思,
--------------------------------------------------------------------------------
你的结果是对的,我运行结果如下!
FIED      SUM(DECODE(THEROW,1,VAL)) SUM(DECODE(THEROW,2,VAL))
---------- ------------------------- -------------------------
SUM(DECODE(THEROW,3,VAL)) SUM(DECODE(THEROW,4,VAL)) SUM(DECODE(THEROW,5,VAL))
------------------------- ------------------------- -------------------------
record1                            1                        2
3                        4                        5
record2                            1                        2
3                        4                        5
---------------------------------------------------------------------------------------7、A 8、C 9、C
---------------------------------------------------------------------------------------
、在哪种索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同( a)?
A、聚簇索引 B、非聚簇索引 C、两者都是 D、两者都不是
8、下列哪种完整性中,将每一条记录定义为表中的惟一实体,即不能重复( c)?
A、域完整性 B、引用完整性 C、实体完整性 D、其他
9、UNIQUE约束和主键约束也是哪种完整性的体现( c)?
A、域完整性 B、引用完整性 C、实体完整性 D、其他
1、每个数据库有且只能有一个(b )。
A、次数据文件 B、主数据文件 C、日志文件 D、其他
2、如果数据库中的数据量非常大,除了存储在主数据文件中,可以将一部分数据存储在(a )。
A、次数据文件 B、主数据文件 C、日志文件 D、其他
---------------------------------------------------------------------------------------SQL题:请用一条SQL查询(ORACLE)语言实现行列转换
悬赏分:0 - 解决时间:2006-8-1 16:01
假设有张学生成绩表(CJ)如下
[姓名] [学科] [成绩]
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
王五 数学 60
想变成
[姓名] [语文] [数学] [物理]
张三 80 90 85
李四 85 92 82
王五 null 60 null
请用一个可以直接执行的SQL解决上题问题。这是以前的一个问题,请不用存储过程OR其他形式,我看不懂。郁闷
还是这道题啊,如果只是针对本题,可以用以下的SQL语句
lect 姓名,
sum(ca 学科 when '语文' then 成绩 end) as 语文,
sum(ca 学科 when '数学' then 成绩 end) as 数学,
sum(ca 学科 when '物理' then 成绩 end) as 物理
from cj group by 姓名
还是这道题啊,如果只是针对本题,可以用以下的SQL语句
lect 姓名,
sum(ca 学科 when '语文' then 成绩 end) as 语文,
sum(ca 学科 when '数学' then 成绩 end) as 数学,
sum(ca 学科 when '物理' then 成绩 end) as 物理
from cj group by 姓名
yclfwm 给我加分哦!(-1 表示没有成绩记录)
lect student,nvl(sum(yuwen),-1) as yuwen,nvl(sum(shuxue),-1) as shuxue,nvl(sum(wuli),-1) as wuli
from ( lect student,
ca when cource='yuwen' then mark el null end as yuwen,
ca when cource='shuxue' then mark el null end as shuxue,
ca when cource='wuli' then mark el null end as wuli
from bob_cj )
group by student
order by student
---------------------------------------------------------------------------------------问两道 sql题
悬赏分:0 - 解决时间:2008-3-21 14:05
1.根据最大的ID,取不在20条之内的数据(ID不是连续的)
2.表结构如:
科目 成绩
语文 不好
数学 好
数学 好
英语 好
根据成绩分组查出哪些科目是好的或不好的,然后查出好的或不好的出现过几次
要求结果如下:
科目 成绩 数量
语文 好 3
数学,英语 不好 1
问题补充:第二题补充:如果两个或以
上的科目的成绩都为好或不好的话,就以豆号分隔,存如一个字段内
第一题看不懂题目。
第二题:
/*SELECT 科目,成绩,COUNT(科目) AS 数量
FROM 成绩表
GROUP BY 科目,成绩*/
我这里不能测试,所以也不能确定对错。
自己试试吧。
PS:刚查了一下,没上面写的那么简单。有答案后再来修改。
表结构,数据如下:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)
1. 旧的解决方法(在sql rver 2000中只能用函数解决。)
--1. 创建处理函数
create table tb(id int, value varchar(10))
inrt into tb values(1, 'aa')
inrt into tb values(1, 'bb')
inrt into tb values(2, 'aaa')
inrt into tb values(2, 'bbb')
inrt into tb values(2, 'ccc')
go
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
真的英文
BEGIN
DECLARE @r varchar(8000)
邯郸大剧院
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 调用函数
SELECt id, value = dbo.f_str(id) FROM tb GROUP BY id
drop table tb
drop function dbo.f_str
/*
id value
----------- -----------
1 aa,bb
2 aaa,bbb,ccc
(所影响的行数为 2 行)
*/
---------------------------------------------------------------------------------------有一表A它的字段有 流水号,身份
证号,人员类别,费用发生日期,费用金额。其中人员类别分为在职和退休两种类别,在职的用1来表示,退休的用2来表示
写一sql语句条件有(1)按人员类别分组(2)统计费用金额的合计及每种人员类别发生费用的人次 (3)如果身份证号为51110908的人(相当于是同一个人)在2005年1月2日和2005年3月2日各发生了一笔费用(数据库里面有两条记录)前一笔消费人员类别为在职,后一笔消费人员类别为退休,像这种情况就统计在职的为0人次,退休的为两人次。
提问者: 闪客家园 - 助理 三级 最佳答案
SELECT * INTO #a1 FROM A
UPDATE #a1 SET 人员类别= 2
WHERE 身份证号 IN (SELECT t1.身份证号 FROM #a1 t1, #a1 t2
WHERE t1.身份证号= t2.身份证号 AND t1.人员类别= 1 AND t2.人员类别= 2)
SELECT 人员类别, count(费用金额) AS '费用人次', sum(费用金额) AS '金额合计' FROM #a1
GROUP BY 人员类别
1,
按人员类别分组好解决:在where后面加上你要的类别即可
即where 人员类别字段名=(你设置的类别植)
2,
求和用sum函数这个直接写在lect 后面就性lect sum(字段名)
求人次用count命令直接写在lect 后面但要在where 后面加上条件
对应你的需求就是
lect count(流水号) from 表名 where 人员类别=(你设置的类别植)
and 费用金额 is not null
有几个类
别用几个语句 或者你用游标循环做
3,
建议你在判断该人员退休的时候,将此人以前所有的数据都改成退休状态,否则很多查询会很麻烦
---------------------------------------------------------------------------------------为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
题目:
使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
提问者: rtevv - 试用期 一级 最佳答案
即是找出不存在他没有选的课的人,表示成下面:
lect distinct SN,SD from S,SC,C
where not exists
(
lect * from C where not exists
(
lect * from SC where C.C#=SC.C# and S.S#=SC.S#
)
)
---------------------------------------------------------------------------------------昨天去面试了,有一道这样的sql题,不知道怎样做,会的朋友帮帮我吧...
表的内容我给忘了,我就打个比方吧:
name salary manager dept
AA 1000 null A
aa 800 AA A
bb 1100 AA A
BB 500 null B
cc 600 BB B
dd 400 BB B
--------------------------------------
name:姓名,salary:薪水,manager:经理,dept:部门
求:比自己所在部门的经理的薪水高的员工的信息,要求输出如下:
name salary dept
问题补充:表: name salary manager dept
AA 1000 null A
aa 800 AA A
bb 1100 AA A
BB 500 null B
cc 600 BB B
dd 400 BB B
提问者: syy913 - 助理 二级 最佳答案
通过左连接求出所在部门经理的信息
再通过where子句比较两者的salary
lect tt.name,tt.salary,tt.dept from tt t1
left outer join tt t2 on t1.manager = t2.name
where t1.salary > t2.salary
假设表名为tt:
lect tt.name,tt.salary,tt.dept from tt,
(lect salary,dept from tt where manager is null) mm
where tt.dept = mm.dept and tt.salary > mm.salary ;
---------------------------------------------------------------------------------------有一表a
id T1
1 a
2 a
3 a
11 a
22 a
111 a
222 a
要求查出以下结果
id T1 有无下级
1 a 是
2 a 是
3 a 无
11 a 是
22 a 是
111 a 无
222 a 无
提问者: xiaobadi - 经理 五级 最佳答案
lect id,t1 ,ca (lect count(1)from a a2 where a1.id!=a2.id and left(a2.id,len(a1.id))=a1.id 好听的动漫主题曲
)when 0 then "无" el "是" end
from a a1
我感觉应该这样。。
没测试过
lect
a.id,
a.t1,
ca b.id when null then "无" el "是" end
from a a, a b
where a.id!=b.id and left(b.id,len(a.id))=a.id
回答者: 阳光上的桥 - 一代宗师 十四级  5-24 01:08
Select id,t1,
CASE When(
Select Count(1) From a B
Where CHARINDEX(CAST(a.id As varchar),CAST(B.id As varchar))=1
And B.id<>Account.id
) >0 Then '是' El '无' End As HaveSon
From
a
---------------------------------------------------------------------------------------请问在一道SQL题?
悬赏分:0 - 解决时间:2007-2-10 10:52
36、现有订单表orders,包含用户信息urid, 产品信息 productid, 以下()语句能够返回至少被订购过两回的productid? (选择一项)
a) lect productid from orders where count(productid)>1
b) lect productid from orders where max(productid)>1
c) lect productid from orders where having count(productid)>1 group by productid
d) lect productid from orders group by productid having count(productid)>1
请问这道题的答案是什么?请解释一下?谢谢了!
提问者: 357318873 - 试用期 一级 最佳答案
选d)
a)是统计一下productid的个数,把不同产品的个数都统计了
b)是求productid的最大值,它本身应该不是个数量
c)语法错了 d)是正确的
d)用了group by ,集函数count求的是分组后的数量,即为同一种产品被定购的次数
---------------------------------------------------------------------------------------48. 关于触发器定义
create trigger tgr_changeClass --调换班级触发器
on student
for update
as
declare @oldClsId int --旧班级号
declare @newClsId int --新班级号
declare @newClsAmount int --新班级人数
t @oldClsId = (lect clsid from deleted)
t @newClsId = (lect clsId from inrted)
t @newClsAmount = (lect stuAmount from class where id = @newClsId)
if @newClsAmount >= 50
begin
print '新班人数已满,请调整更新数据'
rollback transaction
return 故宫观后感
end
update class t stuAmount = stuAmount - 1 where id = @oldClsId
update class t stuAmount = stuAmount + 1 where id = @newClsId
print '调换班级成功'
go
下列说法正确的是( )
a) 该定义无任何错误
b) 触发器定义的语法是先for后on,而这个定义恰恰写反了
c) 倒数3、4行的更新语句执行后,inrted表和deleted表中的数据就清空了
d) if结构中的return可以省略,因为前面已经回滚了
提问者: fzy_bd2007 - 试用期 一级 最佳答案
b) 触发器定义的语法是先for后on,而这个定义恰恰写反了
这个不对,语法就是先on后for.
c) 倒数3、4行的更新语句执行后,inrted表和deleted表中的数据就清空了
这个也不对
选D.橡胶树
---------------------------------------------------------------------------------------40、现有订单表orders, 包含数据如下表。若查询既订购了产品P01,又订购了产品P02的顾客编号,可以执行以下()sql语句。(选择两项)
cid (顾客编号) Pid (产品编号)
C01 P01
C01 P02
C02 P01
C03 P02
a) lect distinct(cid) from orders o1 where o1.pid in ('p01','p02')
b) lect distinct(cid) from orders o1,orders o2 where o1.pid='p01' and o2.pid='p02' and o1.cid=o2.cid
c) lect distinct(cid) from orders o1 where pid='p01' and

本文发布于:2023-05-14 14:33:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/897533.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类别   人员   信息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图