1. 问题简单描述如下:
有一个上传照片的表,字段有 用户名,上传时间,照片文件名
现在要得到最新上传照片的前10个用户名(不重复)。
select top 10 *
from (
select 用户名
,max(上传时间) as '上传时间'
from 表
group by 用户名
)t
order by 上传时间 desc
2. 在一个数据库中,有3万条数据,要查找注册电子邮箱一样的用户。
UserId UserName UserEmail
=================================================
1 ordw odks@ole.com
2 ordw odks@2le.com
3 ordw odks@cddle.com
4 ordw odks@ole.com
select * from table where UserEmail in(select UserEmail from table group by UserEmail having count(*)>1)
3. A表
id cid cname ctype cuse
1 a-1 a123 a 1
2 a-1 bcv b 5
3 a-1 vbb a 1
4 a-1 ccc b 2
b表
cid cname total
a-1 a123 500
a-1 bcv 200
我要的查詢結果是
id cid cname ctype cuse total
1 a-1 a123 a 1 500
2 a-1 bcv b 5 200
3 a-1 vbb a 1 0
4 a-1 ccc b 2 0
select a.*,total=isnull((select total from b where b.cid=a.cid and b.cname=a.cname),0) as total from a
4.表结构如下
id cost date
1 12 2005.1.1
2 13 2005.2.1
3 13 2005.3.1
现要检索如下:
检索成两个字段 2005.2.1-2005.3.1 之间的金额合计 2005.2.1前的金额合计.
select sum(case when date < '2005.2.1' then cost end ) as q_cost,sum(case when date >'2005.2.1' and date < '2005.3.1'then cost end) as h_cost from 表
5.例如产品库一张表记录各个类别中每个产品的数量,如何提取出每个类别中产品数量最多的两种
--建立测试环境
Create Table TEST
(类别 Varchar(10),
产品 Varchar(10),
数量 Int)
--插入数据
Insert TEST Values('A','A01',10)
Insert TEST Values('A','A02',13)
Insert TEST Values('A','A03',12)
Insert TEST Values('A','A05',15)
Insert TEST Values('A','A06',11)
Insert TEST Values('B','B01',20)
Insert TEST Values('B','B02',10)
Insert TEST Values('B','B03',17)
--测试
Select * from TEST A
Where Not Exists(Select 1 from TEST Where 类别=A.类别 And 数量>A.数量 Having Count(1)>1)
Order By 类别,数量 Desc
--删除测试环境
Drop Table TEST
--结果
/*
类别产品数量
A A05 15
A A02 13
B B01 20
B B03 17
*/
6.表1
ID code name phone address
1 001 张 12345 中国
2 002 李 12347 中国
3 003 刘 42342 中国
4 004 胡 76757 中国
表2
ID code linkman Tel
1 001 陈 4434232
2 003 徐 4234234
3 004 叶 6633234
表1和表2根据code 关联 输入电话查询时,查询表1和表2是否等于输入的电话,只要查询到表1或表2
中有记录更显示主表表1的记录
例如: 如果输入电话 76757 和 6633234
查询出来的结果都是 4 004 胡 76757 中国
select a.* from 表1 a,表2,b where a.code=b.code and (a.phone='你想要的号码' or b.tel='你想要的号码')
7.我要实现以下Select语句,怎么办?
数据库:
姓名,语文,数学
1 50 80
2 70 80
要选出:
1 不及格 及络
2 及格 及格
--及格标准也不告诉下.(默认60分为标准)
select
姓名,
语文=case when 语文>=60 then '及格' else '不及格' end,
数学=case when 数学>=60 then '及格' else '不及格' end
from
表
8.表如下:
ID Time
0 2005-10-01 09 :30
1 2005-10-01 09:31
2 2005-10-01 09 :32
3 2005-10-01 15:00:000
4 2005-10-01 18 :21:000
5 2005 10-01 18 :22:000
我想要的结果是找出一定时间范围内的Time,但是假如几条记录是3分钟之内的就只需要这几条记录的时间最早的哪一条
比如,我要找出2005-10-01 08:00 到2005-10-01 19:00:00 这段时间的 上表得出的结果是:
0 2005-10-01 09 :30
3 2005-10-01 15:00:000
4 2005-10-01 18 :21:000
declare @t table
(id int,time datetime)
insert @t
select 0,'2005-10-01 09:30' union all
select 1,'2005-10-01 09:31' union all
select 2,'2005-10-01 09:32' union all
select 3,'2005-10-01 15:00:000' union all
select 4,'2005-10-01 18:21:000' union all
select 5,'2005-10-01 18:22:000'
select * from @t a where not exists (select * from @t b where
convert(char(13),a.time,120)=convert(char(13),b.time,120) and datepart(minute,a.time)>datepart(minute,b.time))
或者
select * from @t a where
(select count(1) from @t b where
convert(char(13),a.time,120)=convert(char(13),b.time,120) and datepart(minute,a.time)>datepart(minute,b.time))<1
id time
----------- ------------------------------------------------------
0 2005-10-01 09:30:00.000
3 2005-10-01 15:00:00.000
4 2005-10-01 18:21:00.000
9.
表名:table1
字段:stcd char(30)
tm date
r5 char(10)
当中数据如下:
105 2005-10-25 21:55:00687.5
105 2005-10-25 21:50:00687.5
105 2005-10-25 21:40:00687.5
105 2005-10-25 21:35:00687.5
105 2005-10-25 21:30:00687.5
105 2005-10-25 21:25:00687.5
105 2005-10-25 21:15:00687
105 2005-10-25 20:55:00687
105 2005-10-25 20:40:00687
105 2005-10-25 20:35:00687
想返回一张表:将r5字段中每个小时中的所有数据相加返回。
select sum(r5) from table group by substring(tm,1,13)
select distinct stcd,sum(convert(float,r5)) as total
from table1
group by convert(varchar(4),DATEPART ( yy,tm))+convert(varchar(4),DATEPART ( mm,tm))+convert(varchar(4),DATEPART ( dd,tm))+convert(varchar(4),DATEPART ( hh,tm))
10.
比如
一个字段如下:
A1
A11
A2
A2.1
A2.11
A2.2
怎么实现查询后
A1
A2
A2.1
A2.2
A2.11
A11
解答:
create table #t(a varchar(20))
insert into #t values('A1')
insert into #t values('A11')
insert into #t values('A2')
insert into #t values('A2.1')
insert into #t values('A2.11')
insert into #t values('A2.2')
SELECT *
FROM qq
ORDER BY LEFT(a, 1), floor(CONVERT(float, RIGHT(a, len(a) - 1))), CONVERT(float,
isnull(RIGHT(a, len(a) - (CASE charindex('.', a) WHEN 0 THEN len(a)
ELSE charindex('.', a) END)), '0'))
(2).再增加点难度,看看能否,增加A2.2.1,A2.2.2,A2.2.11,
希望结果如下:
A1
A2
A2.1
A2.2
A2.2.1
A2.2.2
A2.2.11
A2.11
A11
create table #t(a varchar(20))
insert into #t values('A1')
insert into #t values('A11')
insert into #t values('A2')
insert into #t values('A2.1')
insert into #t values('A2.11')
insert into #t values('A2.2')
insert into #t values('A2.2.11')
insert into #t values('A2.2.1')
insert into #t values('A2.2.2')
select *from #t
order by convert(int,replace (reverse(parsename(reverse(a),1)),'A','')),
convert(int,reverse(parsename(reverse(a),2))),
convert(int,reverse(parsename(reverse(a),3))),
convert(int,reverse(parsename(reverse(a),4)))
/*
left(a,1),
convert(int,reverse(parsename(reverse(SUBSTRING(a,2,len(a)-1)),1))),
convert(int,reverse(parsename(reverse(SUBSTRING(a,2,len(a)-1)),2))),
convert(int,reverse(parsename(reverse(SUBSTRING(a,2,len(a)-1)),3))),
convert(int,reverse(parsename(reverse(SUBSTRING(a,2,len(a)-1)),4)))
*/
drop table #t
/*
A1
A2
A2.1
A2.2
A2.2.1
A2.2.2
A2.2.11
A2.11
A11
*/
查询花了多少时间
select getDate()
select * from tt
select getDate()
14.从db2 表2 里取数据,插到 db1 表1
insert db1..table1 select * from db2..table2
欢迎访问我的站点 : http://www.bt170.cn BT下载
分享到:
相关推荐
这份"SQL学习笔记"涵盖了SQL的基础概念、语法以及高级特性,是学习数据库管理和数据分析的宝贵资料。 1. **SQL基础** - 数据库概念:了解什么是数据库,它的作用以及数据库管理系统(DBMS)如何工作。 - SQL简介...
SQL学习笔记可能会包含以下内容: 1. **基本SQL语法**:包括数据插入(INSERT INTO)、查询(SELECT)、更新(UPDATE)、删除(DELETE)等操作,以及如何使用WHERE子句进行条件筛选。 2. **SQL聚合函数**:如COUNT...
sql练习中易错笔记,order by ,group by,distinct,内连接,外连接等,一些mysql和oracle使用的区别:sql4种连接 两个表中有相同的列,根据共有的列值匹配行 left join左外连接,不管左表是否在右表中有匹配行,都...
SQL(Structured Query ...以上只是SQL学习笔记中的部分要点,实际应用中还需要结合具体数据库系统(如MySQL、Oracle、SQL Server等)的特点和最佳实践。通过持续学习和实践,才能真正精通SQL,成为数据管理的高手。
"SQL学习笔记" 本文档是关于 SQL 学习笔记的总结,涵盖了 SQL 的基本概念、函数、语法、应用场景等方面。下面是对标题、描述、标签和部分内容的详细解释: SQL 基本概念 SQL(Structured Query Language)是一种...
《高效SQL学习笔记》 SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系数据库的标准语言。高效地掌握SQL对于任何IT从业者,尤其是数据分析师、数据库管理员和开发人员来说,都是至关重要的...
【JAVA与Sql学习笔记】 在Java编程中,与SQL数据库的交互是不可或缺的一部分。这篇学习笔记主要关注如何在Oracle数据库中使用PL/SQL的FORALL语句进行批量操作,以及如何利用批绑定(Bulk Binding)来提升性能。此外...
Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...
这份“SQL学习笔记+记录sql各种应用”涵盖了SQL的基础概念、语法以及在实际工作中的多种应用。 一、SQL基础 1. 数据库与表:SQL中的数据库是由一个或多个表组成的集合,表由行和列构成,每一行代表一条记录,每一列...
在深入探讨《Mastering Oracle SQL学习笔记》的内容之前,我们先理解一下这门课程的核心目标:帮助初学者更好地掌握SQL语言中的关键概念和操作,尤其是针对Oracle数据库的特性。这包括了SQL语句的构建、数据筛选、...
《LINQ to SQL 学习笔记》 LINQ (Language Integrated Query) 是.NET框架中引入的一项强大技术,它允许开发者使用熟悉的C#或VB.NET语言语法进行数据查询,而无需学习新的查询语言。LINQ to SQL是LINQ的一个特定实现...
### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...
Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。
t-sql学习笔记,总结的挺好
本篇“SQL学习笔记一”将围绕SQL的基础概念、基本操作以及其在实际工作中的应用展开讨论。 首先,我们要理解SQL的核心功能,包括数据查询、数据插入、数据更新和数据删除,这四大操作构成了SQL的基本语法结构。例如...
这份“sql学习笔记”涵盖了SQL的基础概念、语法和实用技巧,帮助初学者轻松掌握SQL的核心知识。 一、SQL基础 1. 数据库与表:SQL中的数据库是一个组织数据的集合,由一个或多个表组成。表是由行和列构成的数据结构...
### Spark SQL 学习笔记知识点总结 #### 一、Spark SQL 概述 - **定义**:Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,以及支持 SQL 查询的能力。这些特性...
### PL/SQL学习笔记4 —— 集合与成员函数 #### 一、PL/SQL 表(索引表) 在PL/SQL中,**索引表**(也称为**PL/SQL表**)是一种非常有用的结构,它类似于数组但具有更多的灵活性。这种表是非持久化的,即它们不会...