问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Sql语句,分组统计多表联查

发布网友 发布时间:2022-05-01 15:38

我来回答

3个回答

懂视网 时间:2022-05-01 20:00

-------------------------------------day3------------

--添加多行数据:
--
--
--INSERT [INTO] 表名 [(列的列表)]
--SELECT UNION

--SELECT ‘HAHA‘,1,32
--UNION ALL --全部显示/显示重复数据 即使集合相同
--UNION---------将查询的两个结果集合并。结构必须一致 -->常见面试题
--SELECT ‘HEHE‘,2,33
------将查询结果添加到列表中(子查询)
INSERT INTO LESSON (CCODE,CNAME,CNUM)
SELECT ‘C001‘,‘C#编程基础‘,32 UNION
SELECT ‘C002‘,‘C#OOP‘,36 UNION
SELECT ‘C003‘,‘C#PRAME‘,36
SELECT *FROM lesson


-------------------------------------------------------------------------------------------------------------------------------------------------

--实现表的数据备份(复制到其他表中)

--1 生成表 查询, SELECT INTO

--准备:查询

--select* from info
-- SELECT * ---负责列的显示
-- FROM info --数据的来源
-- WHERE -- 查询的条件 eg: WHERE CNAME=‘C#OOP‘
--TRUE 显示 ,false
--WHERE birthday>‘1990-01-01‘
SELECT SEX FROM info
WHERE sex IS NOT NULL

SELECT SNAME FROM INFO
WHERE sname LIKE ‘%月%‘

------备份 info 表到info——bak中
-- 1 INFO_BAK
-- 2 插入查询数据
SELECT *INTO INTFO_BAK FROM INFO --两个功能 创建新表 插入查询数据
--注意 约束不备份 标识属性备份(IDENTITY)
SELECT * INTO INFO_BAK1 FROM INFO
WHERE 1=2
--将info 表中的女同学信息备份到info_bak中

--INSERT INTO INTFO_BAK ( SNAME SEX BIRTHDAY [ADDRESS] TEL )
--SELECT SNAME,SEX, BIRTHDAY ,[ADDRESS] TEL FROM INFO WHERE SEX=0
---------DML数据操作语言
----SQL 基本技能

----insert 增加
-- 语法 insert [into] tab_name[(co1name,co2name....列的列表)]
--(表名)
-- values(val1,val2....值的列表与列的列表匹配),(),()---可以添加多行

--eg(添加表格中所有列的数据)
--1
insert into info (sname,sex,birthday,[address],tel)
values(‘赵明月‘,0,‘1982-3-6‘,‘永济‘,‘15511122221‘)
select * from info
insert info
values(‘房租名‘, 1,‘1980-2-25‘, ‘北京‘,‘010-13112345‘)
select *from info
insert info
values(‘金钱豹‘,1,‘1970-5-9‘,‘天津‘,‘13412362322‘)
insert info
values(‘赵月‘,0,‘1988-4-26‘,‘长沙市‘,‘03318658888‘)
insert lesson
values(‘S1001‘,‘ C#语言程序逻辑和实现‘,52)
insert lesson
values(‘S2099‘,‘.net平台于c#语言‘,56)
insert lesson
values(‘S2002‘,‘Winform编程‘,48)
insert lesson
values(‘S1015‘,‘c#面向对象程序设计‘,68)
insert lesson
values(‘S3001‘,null,null)
select *from lesson

--修改
-- 语法:UPDATE TAB_NAME SET COLNAME=VAL,CONLNAME1=VAL..........
--[WHERE] ---筛选行
--SELECT *FROM info
--UPDATE info SET sex=1,[address]=‘八组‘
--WHERE sex IS NULL AND [address] IS NULL

--UPDATE info SET sname =‘张清瑞‘, sex=0,[address]=‘八组一哥‘
--WHERE snumb=1

-- UPDATE info SET [ADDRESS] =‘BJHAIDIAN‘
--WHERE [address] LIKE ‘010%‘
--删除 DELETE(行)
--语法: DELETE [FROM] TAB_NAME
-- [WHERE 筛选行] -- 如果不写 所有行被删除
-- eg1 DELETE FROM INFO
-- WHERE SEX =0 删除女同学
-- eg2 DELETE INFO 删除表


-- TRUNCATE TABLE 截断表 过程 DROP TABLE ----> CREATE TABLE
-- 语法: TRUNCATE TABLE INFO

--常见面试题
-- Q:delete 删除表中数据是否记录日志,是否能恢复
--A:日志内容是对行数据的删除行为,可以恢复
-- Q:truncate table 是否记录日志,是否能恢复
--A: 在oracle数据库DDL操作不记录日志,不可以恢复;
-- 在sqlserver数据库 DDL操作被记录,记录的是数据页的操作 可以恢复
--Q:清空海量数据 DELETE 和 TRUNCATE TABLE 哪个效率高
--A:TRUNCATE TABLE 效率高,因为他是以数据页为单位删除和记录日志,所有相对于DELETE
-- 来讲它的操作和记录次数少,所以效率会更高


--查询

--1简单查询
--语法:SELECT 显示内容
-- FROM 数据来源(表,视图,结果集)
-- [WHERE 条件] --筛选行
-- [GROUP BY 分组]
-- [HAVING 分组条件]
-- [ORDER BY 排序 升序(默认)asc 降序 desc]
-- 基础知识:SELECT(只读操作 从数据文件中读取,临时存储在内存中)
-- 查询效率:(15seconds)
-- SELECT 重点:效率
--1.SELECT *(所有列) 不建议写,只需要部分列,*在底层需要解析(
--知道*涵盖了哪些列)需要时间 影响效率
--2.WHERE 条件(bool 类型) 默认为全表遍历的方式
-- <,>,=,<=,>=,!=
-- and or not
-- is null ,is not null
--like &,_,[],[^]
--BETWEEN AND , NOT BETWEEN AND
-- in() , not in()
-- 3. order by 排序 升序asc 降序 desc
-- 1.排序是发生在内存中,对查询结果集排序,尽量少在
-- 服务器上排序,能不用就不用.最好在客户端进行排
-- 序
-- 按照薪水排序
SELECT * FROM EMP
ORDER BY SAL DESC

--按表达式排序
SELECT * FROM EMP
ORDER BY SAL+ ISNULL(COMM,0) DESC
--按多条件排序 原理:如果第一个条件排序出现相同数据时,可以
--按第二个条件继续排序
SELECT * FROM EMp
ORDER BY SAL DESC, HIREDATA ASC
--4.TOP 结果集中的前n个
select top 3 * from emp
select top 20 percent * from emp
--eg 查询工资最高的5名员工
SELECT TOP 5* FROM EMP
ORDER BY SAL+ ISNULL(COMM,0) DESC
--5. DISTINCT 隐藏重复数据
SELECT DISTINCT JOB FROM EMP
--6. 别名
SELECT ename AS 姓名,job 工作岗位,上级=MGR,HIREDATE 入职时间 FROM EMP
--7. 按格式显示:员工:7369 姓名:smith 工作是:clerk
SELECT ‘员工:‘+cast(empno AS VARCHAR(10)),‘姓名:‘+ename ,‘工作是:‘+job from emp
---将数据转成指定类型
--2分组统计查询:

------统计函数:聚合函数
--MAX() , MIN() ,SUM(), AVG(), COUNT()
--平均薪水 SELECT COUNT(*) ,AVG(SAL),MAX(SAL) FROM EMP
----COUNT(*),COUNT(列)
--当列有null的时候 不算数量 而count(*) 不会为null
--max(),min(),count(), 可以 SUM(),AVG() 不可以
--不行 where 语句后跟的是bool变量的条件
--如果SELECT 语句后有聚合函数,那么其他字段不能显示在SELECT后,
--除非该字段写在聚合函数中



-----------分组语句

SELECT * FROM EMP

---------统计每个部门几个员工
SELECT DEPTNO,COUNT(EMPNO) 人数 FROM EMP
GROUP BY DEPTNO
HAVING COUNT(EMPNO)>3 -----筛选组的条件,一定跟在GROUP BY 后面

-----------EG:统计每个部门薪水超过2000的人数,并显示此人数至少两人的部门

SELECT JOB,COUNT(EMPNO) 人数 FROM EMP
WHERE SAL>2000
GROUP BY JOB
HAVING COUNT(EMPNO) >=2

-----筛选顺序 WHERE(不能跟聚合函数) /GROUP BY / HAVING(常跟聚合函数,很少跟字段)

------------------- SELECT 后面可以跟分组字段和聚合函数

-------------------- 可以按多组分列分组 用,隔开


------------------------------------------------多表连接查询
--两个表连接查询 不一定要有主外键关系
-- 需要将多个表的数据综合显示,就需要将多表连接查询
--------1. 笛卡尔积(基础(关系代数)) 也称为:交叉连接结果集

SELECT * FROM EMP,DEPT
SELECT *FROM EMP CROSS JOIN DEPT

---------2.内连接([inner] join)

--两个表中关联字段相等的行

------eg 1.
SELECT * FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO----------->内连接

SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO AND JOB=‘CLERK‘

--INFO LESSON SCORE
--1查询所有参加考试的同学的考试信息(考生姓名,参考科目,考试成绩)
--2将考试成绩及格的进一步查询出来
SELECT sname,cname,score FROM info,lesson,score
WHERE info.snumb=score.snumb AND lesson.ccode=score.ccode

SELECT SNAME,CNAME,score
FROM SCORE JOIN INFO
ON info.snumb=score.snumb
JOIN lesson
ON lesson.ccode=score.ccode

---------3.外连接
-------------左外连接:左表完全显示,右表显示与左表关联字段相等的行
-------------右外连接:右表完全显示,左表显示与右表关联字段相等的行

--eg
SELECT *FROM EMP LEFT JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO
-------------全连接 (原理:左表完全显示,右表完全显示,关联的相同部分只显示一次)
SELECT * FROM EMP FULL JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO
--------4. 自连接(常见笔试题)
--1如何判断自连接什么情况要用自连接
-------当同一列的值相互之间金星比较时
--2 自连接的使用语法(自己连接自己,一定要有别名)
SELECT * FROM EMP AS A,EMP AS B
--------------------

010.简单查询、分组统计查询、多表连接查询(sql实例)

标签:full join   编程   --   连接查询   数据文件   分组   表名   显示   creat   

热心网友 时间:2022-05-01 17:08

select a.lqr,
(select sum(sl) from t2 where a.lqr = t2.lqr) kc,
(select sum(sl) from t1 where a.lqr = t1.lqr) lq
from
(
select lqr
from t1
union 
select lqr
from t2
) a

追问可以不可以加时间段查询

SELECT a.lqr, SUM(b.sl) AS kc, SUM(a.sl) AS lqs,
FROM t1 a INNER JOIN
t2 b ON a.lqr = b.lqr
GROUP BY a.lqr
这样 为什么出来的kc会是400

热心网友 时间:2022-05-01 18:26

250 120 怎么来的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问我的网络一天了找个部门到现在没有解决请问我上哪投诉? 计算机具备哪几种功能? 计算机有哪些功能是什么 歌词中有丑姑娘的歌曲 驾照不年审会怎样 没开过车驾照年审会通过吗 本来白色的背心放入洗衣机清洗后就变成有黑色斑点 其他一起洗的衣物... ...衣服颜色保持鲜艳(主要是白色衣服洗几次感觉就有点颜色不亮丽了... 为什么登陆lol会叫你解绑 小姨子告诉我说,炒菜时记住这4个小技巧,就是比别人做的好吃 能治好强直性脊柱炎吗或控制病情发展【强直性脊柱炎】 谁有办法让手机通过外接电源供电通电就会自动开机 跳过按开机键 如果要改装的话要怎么改装 混凝土强度等级fc=16.7牛么平方毫米 表示什么? 平方千米的字母表示是什么? 安卓6.0在哪里设置自动开机?我手机是小米版本8.1.5.0必有重谢 怎么设置成让手机自动开关机,软件也行 请问壁虎寓意吉祥吗? 为什么在cad复制到word里的图打印出来不清晰? cad图片粘贴到word打印不清晰怎么弄 1毫米等于多少平方毫米? 在cad中画的图复制到word中打印时一点都不清楚是什么原因 为什么电压源要串联一个电阻而电流源是并联一个电阻 cad图怎么导入word中清晰 安卓手机接通电源可否自动开机 安卓4.4设置自动开机 平方毫米怎么表示 为什么我cad导入word 线性不光滑 为什么一个理想电压源并联一个电阻可以等效实际电压源? 家里有壁虎什么征兆 女生看到壁虎什么征兆 壁虎爬进家里吉利吗 平方毫米等于多少平方厘米 在cad中画的图复制到word中打印时一点都不清楚是什么原因? 招商银行是全国性的银行吗? 中国有哪些不是国有银行 pscc和ps有什么区别 知道中国移动网络的进 煎蛋的颜色 阿富汗与中国哪里接壤 阿富汗挨着中国哪里 阿富汗与中国哪里接壤走廊 阿富汗和我国接壤吗 请问《少年包青天》还有没有第四部? 少年包青天还会拍第四部么? 少年包青天第四部真的没有了吗? 少年包青天第4部拍了么? 还继续拍少年包青天4吗? 少年包青天第4部什么时候出?主演都是谁呢 少年包青天4什么时候拍 会拍少年包青天第四部吗??? sql 多表联接查询(超过有五张表,但是又分多种情况,子查询语句有十几条)统计然后分组 少年包青天第四部什么时候拍 少年包青天4还开拍吗