sql分组

mysql语法笔记

冷暖自知 提交于 2020-04-08 13:59:49
SQL语法笔记 基础查询 distinct去除重复行; concat()使用concat包含多个字段作为一个字段输出; select concat(last_name ,',', first_name ,',',salary) as 员工工资 from employees; as 别名,as也可以省略但是加as可以提高可读性; ifnull()函数:如果连接查询某个字段包含null,会导致该列的数据显示为空,使用ifnull判断一下可以有效解决该问题 select concat(department_id,',',last_name,',',manager_id) from employees ; -- 上图是不加ifnull函数,返回的值中有null select concat(department_id,',',last_name,',',ifnull(manager_id,0)) as 奖金率 from employees ; limit 限制输出返回行输 字符型和日期型的常量值必须用单引号引起来,数值型不需要 isnull函数,判断某字段或表达式是否为null,如果是则返回1,否则返回0 select isnull(commission_pct), commission_pct from employees; 条件查询 select 查询字段 from 表名 where

linq to sql (Group By/Having/Count/Sum/Min/Max/Avg操作符)

半腔热情 提交于 2020-04-06 06:23:13
Group By/Having操作符 适用场景 :分组数据,为我们查找数据缩小范围。 说明 :分配并返回对传入参数进行分组操作后的可枚举对象。分组;延迟 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By按CategoryID划分产品。 说明:from p in db.Products 表示从表中将产品对象取出来。group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最后select时,只能select g。当然,也不必重新命名可以这样写: var q = from p in db.Products group p by p.CategoryID; 我们用示意图表示: 如果想遍历某类别中所有记录,这样: foreach (var gp in q) { if (gp.Key == 2) { foreach (var item in gp) { //do something } } } 2.Select匿名类: var q = from p in db.Products group p by p.CategoryID into g select

Oracle Group总结

孤街醉人 提交于 2020-04-01 23:00:15
许多人在刚开始使用GROUP BY语句的时候经常都会碰到一些错误。刚刚在网上看到一篇关于GROUP BY的文章,觉得不错,转过来学习学习,下面再加上一些自己的看法。 ================================================================================== Oracle Group By 用法之 —— Having 客户需求分析:   笔者最近接到一家客户的一个需求。他们部署了一个ERP系统,现在采用的就是Oracle数据库。现在由于企业统计分析的需要,要实现如下的需求。   1、按月份来统计2009年第一季度每个供应商的采购金额。也就是说,在报表中要能够显示出2009年1月份、2月份、3月份供应商的采购金额合计,不需要明细。   2、显示的结果按年度、月份、供应商名字进行排序。 PL/SQL语句解析:   select extract(YEAR FROM t.dateordered) AS 年度,extract(MONTH FROM t.dateordered) as 月份,   p.name as 供应商名字,sum(t.linenetamt) 合计   from c_orderline2 t   left join c_bpartner p on p.c_bpartner_id=t.c_bpartner

单表查询与多表查询

烈酒焚心 提交于 2020-03-28 02:54:48
重要:书写顺序,执行顺序。 书写顺序:select distinct * from '表名' where '限制条件' group by '分组依据' having '过滤条件‘ order by limit 执行顺序:from  where  group by  having  order by  limit  distinct  select View Code from    #先确定是哪张表 where    #再确定是否有过滤条件 select    #最后确定要过滤出来的数据的哪些字段 select id,name from emp where id >3 and id <6; 一 、单表查询 实例数据 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', #大部分是男的 age int(3) unsigned not null default 28, hire_date date not null, post varchar(50), post_comment varchar(100), salary double(15,2), office int,

SQL语句统计每天、每月、每年的数据

最后都变了- 提交于 2020-03-20 15:53:19
1、每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(ordertime) 2、每月 select year(ordertime) 年, month(ordertime) 月, sum(Total) 销售合计 from 订单表 group by year(ordertime), month(ordertime 3、每日 select year(ordertime) 年, month(ordertime) 月, day(ordertime) 日, sum(Total) 销售合计 from 订单表 group by year(ordertime), month(ordertime), day(ordertime) 另外每日也可以这样: select convert(char(8),ordertime,112) dt, sum(Total) 销售合计 from 订单表 group by convert(char(8),ordertime,112) sql题 如何统计查询一个月中每天的记录 怎么写啊?写出来啊! 比如说要查2010年3月份每天的记录 答案 select count(*),substr(t.date,1,10) from table t where t.date like '2010-03%

sql分组查询

不打扰是莪最后的温柔 提交于 2020-03-19 08:29:40
http://www.jb51.net/article/21539.htm 情景一: 表中数据 name score aaa 11 aaa 19 bbb 12 bbb 18 ccc 19 ddd 21 期望查询结果如下 name score aaa 30 bbb 30 ccc 19 ddd 21 复制代码 代码如下: ---检查表是否存在 if exists(select * from sysobjects where name='testSum') drop table testSum go ---创建表 create table testSum ( tid int primary key identity(1,1), tname varchar(30) null, tscor int null ) go insert into testSum (tname,tscor) select 'aaa',11 union all select 'aaa',19 union all select 'bbb',12 union all select 'bbb',18 union all select 'ccc',19 union all select 'ddd',21 ---查询语句 select tname ,sum(tscor) from testSum group by tname

MySQL笔记

淺唱寂寞╮ 提交于 2020-03-19 08:04:55
1、查询条件分类 查询总结SELECT 查询列表 7FROM 表1 别名 1连接类型 JOIN 表2 别名 2ON 连接条件 3WHERE 分组前筛选条件 4GROUP BY 分组列表 5 HAVING 分组后筛选条件 6ORDER BY 排序列表 8LIMIT 起始条目,条目数 9 SELECT 查询列表 FROM 表名 WHERE 筛选条件 条件分类 1、<,>, =, !=, <>, <=, >= 2、逻辑运算符 && || ! AND OR NOT WHERE Id > 5 AND Id < 7 等价于 WHERE NOT (Id >=5 AND Id <=7) 3、模糊查询 LIKE 通配符 %任意个字符包含0个字符 _ 任意单个字符 /* LIKE '_$_%' ESCAPE '$' 意思是用$符号当做转义字符使用 '_\_%' ESCAPE '\'; 以一个字符开头,第二个字符是下划线的*/ BETWEEN 小值 AND 大值 IN (opt1,opt2) IS NULL 字段 IS NOT NULL 安全等于<=>NULL 和数值 LENGTH('john') =4 ORDER BY ID ASC, salary DESC; 先按ID升序,再按salary降序 2、sql函数 函数 1、单行函数 CONCAT(),LENGTH(),IFNULL(exp1,exp2)

MySQL必知必会

牧云@^-^@ 提交于 2020-03-19 05:57:41
1.了解SQL 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。 表 (table)某种特定类型数据的结构化清单。 模式(schema)关于数据库和表的布局及特性的信息。 列(column)表中的一个字段。所有的表都是由一个或多个列组成的。 行(row)表中的一个记录。 数据类型(datatype)所容许的数据的类型。 主键(primary key)一列(或一组列),其值能够唯一区分表中每个行。 SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。 表中的任何列都可以作为主键,只要它满足以下条件: 任意两行都不具有相同的主键值; 每个行都必须具有一个主键值(主键列不允许 NULL 值)。 SQL 有如下的优点 SQL 不是某个特定数据库供应商专有的语言。几乎所有重要的 DBMS 都支持 SQL ,所以,学习此语言使你几乎能与所以数据库打交道。 SQL 简单易学。它的语句全都是由描述性很强的英语单词组成,而且这些单词的数目不多。 SQL 尽管看上去很简单,但它实际上使一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。 2.操作数据库表 show databases; // 返回当前数据库的列表 use crash; //

SQL语句:Group By总结

こ雲淡風輕ζ 提交于 2020-03-19 02:41:19
1. Group By 语句简介: Group By 语句从英文的字面意义上理解就是 “ 根据 (by) 一定的规则进行分组 (Group)” 。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 P.S. 这里真是体会到了一个好的命名的力量, Group By 从字面是直接去理解是非常好理解的。恩,以后在命名的环节一定要加把劲 :) 。话题扯远了。 2. Group By 的使用: 上面已经给出了对 Group By 语句的理解。基于这个理解和 SQL Server 2000 的联机帮助,下面对 Group By 语句的各种典型使用进行依次列举说明。 2.1 Group By [Expressions]: 这个恐怕是 Group By 语句最常见的用法了, Group By + [ 分组字段 ]( 可以有多个 ) 。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集, 其中水果名称 (FruitName) 和出产国家 (ProductPlace) 为联合主键 : FruitName ProductPlace Price Apple China $1.1 Apple Japan $2.1 Apple USA $2.5 Orange China $0.8 Banana China $3.1

MYSQL数据库进阶操作

こ雲淡風輕ζ 提交于 2020-03-18 11:12:41
一,基础强化 where语句的作用: 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中. 1,as关键字 在使用SQL语句显示结果的时候,往往在屏幕显示的字段名并不具备良好的可读性,此时可以使用 as 给字段起一个别名。 1)使用 as 给字段起别名 select id as 序号, name as 名字, gender as 性别 from students; 2)可以通过 as 给表起别名 -- 如果是单表查询 可以省略表明 select id, name, gender from students; -- 表名.字段名 select students.id,students.name,students.gender from students; -- 可以通过 as 给表起别名 select s.id,s.name,s.gender from students as s; 2,消除重复行(distinct) distinct 可以消除重复的行。 select distinct 列1,... from 表名; 例: select gender from students; -- 看到了很多重复数据 想要对其中重复数据行进行去重操作可以使用distinct select distinct gender from students; 二,条件查询 select