易截截图软件、单文件、免安装、纯绿色、仅160KB

sql group by 与 having的用法

1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)
例如,有如下数据库表:
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

例子eg:
问题:
有表格如下:
create table workers(id int primary key,name varchar(12),department varchar(12),salary int,releaseDay date);

id 编码
name 姓名
department 部门
salary 工资
releaseDay 发放日期 格式 2009-10-10
现在要求写出sql语句:
找出曾经在任何一个月发了两次或者两次工资以上的员工信息,当月工资发放次数,工资总数,发放月份;
解答:
create table ty_workers
(
id int primary key,
name varchar(12),
department varchar(12),
salary int,
releaseDay date
);
select * from ty_workers
select name 姓名, count(salary) 发放次数 , sum(salary) 发放总额, substr(to_char(releaseDay,'yyyy-mm-dd'),0,7) 发放月份, department 部门
from ty_workers
gr


相关文档:

sql中 in 、not in 、exists、not exists 用法和差别


exists (sql 返回结果集为真) 
not exists (sql 不返回结果集为真) 
如下: 
表A 
ID NAME 
1    A1 
2    A2 
3  A3 
表B 
ID AID NAME 
1    1 B1 
2  & ......

SQL 语句练习


–1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd。
select emp_no,emp_name,dept,isnull(convert(char(10),birthday,120),’日期不详’) birthday
from employee
order by dept
–2、查找与喻自强在同一个单位的员工姓名、 ......

java 连接 sql 2005 的方法

java 连接 sql 2005 的方法:
 1。到微软官方网站下载2005的jdbc并解压,获得文件sqljdbc.jar
2。复制文件sqljdbc.jar到jdk目录\jdk1.5\jre\lib\ext下。
 3。开始-〉程序-〉sql server 2005-〉配置工具-〉SQL Server Configuration Manager。启动sql 2005服务。
点击 sql server2005网络配置节点,并选中&rd ......

数据批量导入远程SQL服务器的亲身实践

  目的:将数据批量导入远程服务器
  环境:SQL软件,EXCEL软件,VS2005软件,本地两个机器上都有SQL数据库,而且数据存放在其中一个表。
  操作实践
  1、用远程数据库的ip、用户名、密码在本地登录;
  2、结果,其中一个机器能登录,一个不能登录(以下操作在可登录的机器上完成);
  3、第一次我想通 ......

SQL server 2008 创建主键为自增列的表

使用Tranact-SQL 编写代码来创建一个新表:
 
USE [OnlineJudge]
GO
/****** Object: Table [dbo].[User1] Script Date: 05/17/2010 14:05:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[User2](/*notice convert the tablename*/
[num] [int]IDENTITY(1,1) NOT N ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号