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

sql查询 表table1 id time money 1 2016-1-1 150 1 2016-1-2 180 2 2016-1-1 100 3 2016-1-1 90

发布网友 发布时间:2022-04-10 08:12

我来回答

2个回答

懂视网 时间:2022-04-10 12:34

 

      2017/11.10

SQL的主要功能:

 1.数据定义
 2.数据查询
 3.数据操作
 4.数据控制功能(了解)
 
 
SQL语言的动词:

 数据定义:create,drop, alter
 数据查询:select
 数据操作:insert,update,deledte
 数据控制:crant,revoke
 

 数据查询语句的基本格式:
  select[distinct] 目标列      //distinct去掉记录中的重复值
  from 基本表(或视图)
  [where 条件表达式]
  [group by 列名1 [having内部函数表达式] ]
  [order by 列名2 [asc(升序)/desc(降序)] ] 
       中括号中的表示可选项,可有可无

 select语句的含义是,根据where子句条件表达式,从from子句中的基本表达式或视图中检索出满足条件的元祖,
 按select子句的目标列,选出元组中的相应列形成新的表.新表记录中可以按order by 子句中指定的列名2进行
 升序或降序排序,还可以按group不用子句指定的列名1的值对元组进行分组

 1.select语句:
  ues 数据库名
  go
  select * from 表名     --查询所有内容
  select sno,sname from 表名   --查询指定内容
  select sno,sname,2007-sage as出生年月  from student  --as出生年月,表示重命名新列名
             --不写as也行,用空格表示
  
  select top 3 * from student  --查询前3条语句
  select top 6 name from student  --查询前6条的单个信息(姓名等)
  
  查询结果放入新表中:
  select sname,ssex into newstudent from student    --newtable会自动创建

  where子句:
   1.查询所有性别为男生的学生:

    select * from student where ssex=‘男‘

   2.检索年龄在19岁以上的学号,姓名和性别:

    select sno,sname,ssex from student where ssage>19

   3.查询年龄在18-20岁之间的学号和姓名:
 
    select sno,sname from student where age  not between 18 and 20
    select sno,sanem from student where age<18 or age>20
  in查询:
   查询专业为计算机,通信的所有学生的学生:
   select * from student where sdept in (‘计算‘,‘通信‘)

  or查询:
   
  and查询:
   select * from student where sdept=‘计算机‘ and ssex=‘男‘

  字符匹配查询:

   通配符:
    _ (下划线)表示任何一个字符
   
    % 表示任何多个字符(包括0个)

   查询课程名第二个字符为据的课程:

    select * from course where cname like ‘_据%‘

   access的通配符为:
     ?代表单一字符     相当于 _
     *代表0或多个字符     相当于%
     #代表单一数字(0-9)

    select * from course where cname like ‘?据*‘

  空值查询:
   查询没有填写年龄的学生姓名
    select  sname from student where sage is null

 

SQL课堂笔记--查询表1

标签:数据   dep   alter   drop   空格   重命名   表示   括号   记录   

热心网友 时间:2022-04-10 09:42

Select id,Count(0) as结果 From table1  Group By id


只是个简单的Group By语句而已


关于Group By


1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)

注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里。

例如,有如下数据库表:

A    B 
1    abc 
1    bcd 

1    asdfg

 如果有如下查询语句(该语句是错误的,原因见前面的原则)

select A,B from table group by A  

该查询语句的意图是想得到如下结果(当然只是一相情愿) 

A     B 
       abc 
1     bcd 

       asdfg 

右边3条如何变成一条,所以需要用到聚合函数,如下(下面是正确的写法):

select A,count(B) as 数量 from table group by A 
这样的结果就是 
A    数量 
1    3  

 

2. Having

where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

having 子句被*子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如:

SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2

 

3.使用compute和compute by
  使用compute子句允许同时观察查询所得到各列的数据的细节以及统计各列数据所产生的汇总列
      select * from work [查询所得到的各列的数据的细节]
      compute max(基本工资),min(基本工资) [统计之后的结果]
  这个例子中没有使用by关键字,返回的结果是最后添加了一行基本工资的最大值和最小值,也可增加by关键字.
        例:select * from work order by 学历
           compute max(基本工资),min(基本工资) by 学历
        比较:select 学历,max(基本工资),min(基本工资) from work group by 学历
        说明:1:compute子句必须与order by子句用在一起
             2:compute子句可以返回多种结果集.一种是体现数据细节的数据集,可以按分类要求进行正确的分类;另一种在分类的基础上进行汇总产生结果.
             3:而group by子句对每一类数据分类之后只能产生一个结果,不能知道细节

 

示例学习Northwind数据库:

非相关查询:

1:返回每个美国员工都为其处理过订单的所有客户

--思路:1:Employees表中获取美国员工总数2:Orders表中查询美国员工处理的Order,对CustomerID分组后,统计其不同的EmployeeID正好等于美国员工总数

Select CustomerID From Orders Where EmployeeID In         --得到美国员工服务 的客户

(Select EmployeeID From Employees Where Country=N'USA') -- 得到全部美国员工id

group by CustomerID                                         --按客户分组

Having Count(Distinct EmployeeID)=                    --为其处理订单的distinct 员工数等于美国总员工数

(Select Count(*) From Employees Where Country=N'USA')--美国员工总数

2:

返回在每月最后实际订单日期发生的订单(每月最后订单日期可能不是每月最后一天)

--思路:子查询按月分组得到每月最近订单日期

Select OrderID,CustomerID,EmployeeID,OrderDate

From Orders

Where OrderDate In

(Select Max(OrderDate) From Orders Group by Convert(char(6),OrderDate,112))--112表示YYYYMMDD char(6)提取YYYYMM

 

 3.

Select字句在逻辑上是SQL语句最后进行处理的最后一步,所以,以下查询会发生错误:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate) AS OrderYear, CustomerID
   FROM dbo.Orders) AS D
GROUP BY OrderYear 
;因为group by是在Select之前进行的,那个时候orderYear这个列并没有形成。


如果要查询成功,可以像下面进行修改:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate) AS OrderYear, CustomerID
   FROM dbo.Orders) AS D
GROUP BY OrderYear;还有一种很特殊的写法:

SELECT OrderYear, COUNT(DISTINCT CustomerID) AS NumCusts
FROM (SELECT YEAR(OrderDate), CustomerID
   FROM dbo.Orders) AS D(OrderYear, CustomerID)
GROUP BY OrderYear;在作者眼里,他是非常喜欢这种写法的,因为更清晰,更明确,更便于维护。


在查询中使用参数定向产生一批结果,这个技巧没有什么好说的。


嵌套查询,在处理逻辑上是从里向外进行执行的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做胚胎移植成功率多少 试管婴儿移植冻囊胚成功率有多高 试管移植冻胚成功率有多大 如何让word的奇数页页眉是文章的标题? 心目中的自己作文400字左右请告告我开头怎么写 封神榜的十二金仙是谁 雅漾的护肤品怎么样? - 知乎 女孩子以馨字取最佳的名字 英语口语练习软件推荐哪款英语学习工具好用 不锈钢保温杯壁有一圈圈的印 钢琴演奏级相当于专业十一级 过了省级的主管护师证什么时候才能发 2015年主管护师证书什么时候可以领取, 2015年主管护师证书什么 爱普生CB-U32投影机怎么样好不好 胆固醇居高不下,哪些食物需要少吃了呢? 胆固醇高的人注意哪些饮食,少吃那些东西呀?哪些 胆固醇高不能吃哪些东西 胆固醇偏高要少吃哪些食品? 东方财富可以登录中银证券 中银证券的可用需要多久才能转为可取 中银证券销户很麻烦 汤姆索亚历险记简介500字 《汤姆·索亚历险记》梗概450字左右,急急急急急急急急呀~~~ 《汤姆.索亚历险记》主要内容450字? 停牌股票、st股票以及两融市值是否纳入中银国际证券新股申购市值? SQL如何查询表1中的数据在表2中没有 河南中级会计师报名审查严格么? 为什么要投资美股、港股? 有没有有深度思想的公众号推荐? 有没有一些比较好的,可以分享自己经验的微信公众号,或者可以学习到一些日常生活知识的微博?求推荐。 海参怎么样做好吃? 特朗普自从上台后,很喜欢对各国发动贸易战,这是为什么? 特朗普的贸易战的最终结果会不会造成中美两国互不贸易? 为什么特朗普要发起贸易战? 特朗普挑起贸易战美国农民什么反应? 特朗普贸易战会致全球贸易损失吗? 贸易战中美和谈,你怎么评伦发动贸易战的特朗普? 特朗普当上美国总统后,为何热衷于与他国打贸易战? 特朗普自从上任后,为美国人民做过哪些事? 美国总统特朗普若遭到*下台,由他主导的美国贸易战会不会停止? 科赫兄弟能改变特朗普贸易战决定吗? 如何劝说特朗普放弃贸易战 特朗普挑起贸易战美国将自食苦果吗? 手机淘宝旧版本与新版本不合 担保人的信用卡会受到影响吗? 信用卡担保人有没风险 信用卡担保人的责任 帮别人担保办信用卡风险大吗? 浦发信用卡担保人有没风险 信用卡担保人承担持卡人恶意诈骗的刑事责任吗?