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
相关文档:
select *from customers
select *from orders
select customers.cust_id, orders.order_num from customers inner join orders on customers.cust_id=orders.cust_id
select customers.cust_id, orders.order_num from customers left outer join orders on customers.cust_id=orde ......
数据库表设计时如果设置可以为null,则它就不会变为'1900-1-01'
如果设计时不可以为null,它就会默认为: '1900-01-01'
CREATE proc UP_Rsk_AddModel @ygcode varchar(6), @name varchar(8), @xb varchar(2), @bm varchar(32), @jg varchar(16), @mz varchar(16) ......
一。SQL Server 的三种自定义函数
“自定义函数”是我们平常的说法,而“用户定义的函数”是 SQL Server 中书面的说法。
SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值。
自定义函数分为:标量值函数或表值函数
如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可 ......
weblogic8.1没有带SQL Server 2005的JDBC驱动,需要去微软网站下载。
地址:http://msdn.microsoft.com/vstudio/express/sql/download/
启动 SQL Server Configuration manager,展开SQL Server 2005
网络配置,单击“MSSQLSERVER的协议&rdqu ......
SQl Xml和C# Xml数据的一点操作总结
在此申明Xml是InfoSet数据不是字符串,所以在此强烈反对用string拼接xml。数据库可以存放xml类型数据,那么该数据的具体操作又如何了。
1.首先建立一张含有xml数据类型的表
CREATE TABLE [dbo].[TestXml](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Message] [xml] NULL ......