建表sql,group by 分组汇总

sqlserver:

create table TM_PRODUCT (
   ID                   bigint               identity(0,1),
   PROD_NAME            nvarchar(128)        null,
   PROD_SERIAL          varchar(64)          null,
   PROD_TYPE            nvarchar(128)        null,
   MARK_FOR_DELETE      char(1)              not null default '0',
   _DATE                datetime             null,
   CONTENT              nvarchar(Max)        null,
   constraint PK_TM_PRODUCT primary key (ID)
)

mysql:

CREATE TABLE `TM_CONTACTS` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `TERMINAL_ID` int(11) NOT NULL COMMENT '服务终端ID',
  `SECTION_NAME` varchar(30) DEFAULT NULL COMMENT '科室名称',
  `DOCTOR_DUTY` varchar(30) DEFAULT NULL COMMENT '医生职务',
  `DOCTOR_NAME` varchar(30) DEFAULT NULL COMMENT '医生名称',
  `EXE_USER_ID` int(11) DEFAULT NULL COMMENT '维护人员ID',
  `COMPANY_ID` int(11) NOT NULL COMMENT '所属企业ID',
  `REMARK` varchar(30) DEFAULT NULL COMMENT '备注',
  `CREATE_USER` int(10) DEFAULT NULL COMMENT '创建人',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `UPDATE_USER` int(10) DEFAULT NULL COMMENT '更新人',
  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
  `MARK_FOR_DELETE` int(1) NOT NULL DEFAULT '0' COMMENT '删除标识',
  `OPT_COUNTER` int(5) NOT NULL DEFAULT '0' COMMENT '版本号',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='通讯录表';

oracle:

 create table TM_PROJECT
(
  ID                  NUMBER(11) PRIMARY KEY not null,
  MAIN_CODE   		  VARCHAR2(100),
  CAR_TYPE_CODE       VARCHAR2(100),
  CAR_TYPE_NAME       VARCHAR2(100),
  PRO_CODE    		  VARCHAR2(100),
  PRO_NAME			  VARCHAR2(100),
  PRO_DESC			  VARCHAR2(1024),
  OPT_COUNTER		  Number(11),
  CREATE_USER		  Number(11),
  CREATE_TIME		  TIMESTAMP,
  UPDATE_USER		  Number(11),
  UPDATE_TIME		  TIMESTAMP
);COMMIT;
create sequence SEQ_PROJECT_ID
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20;
COMMIT;
@SequenceGenerator(name = "generator", sequenceName = "SEQ_PROJECT_ID")

group by 汇总:

rollup语句在跨指定的维度组上计算多个级别的小计。它还计算了一个总数。
cube是详细行的交叉表汇总。cube语句计算一组维度所有可能组合的小计,同时还计算总计。

当向 ROLLUP 传入一列时,会得到一个总计行。当向 ROLLUP 传递两列时,将会按照这两列进行分组,同时按照第一列的分组结果返回小计行。最后对所有的有一个总计行。如果 ROLLUP(A,B)则先对 A,B进行 GROUP BY,之后对 A 进行 GROUP BY,最后对全表 GROUP BY。如果 ROLLUP(A,B,C)则先对 A,B,C进行 GROUP BY ,然后对 A,B进行GROUP BY,再对 A 进行GROUP BY,最后对全表进行 GROUP BY.

如果 CUBE(A,B)则先对 A,B 进行 GROUP BY,之后对 A 进行 GROUP BY,然后对 B 进行 GROUP BY,最后对全表进行 GROUP BY.如果 CUBE(A,B,C)则先对 A,B,C 进行 GROUP BY,之后对 A,B ,之后对A,C ,之后对 B,C 之后对 A,之后对 B,之后对 C,最后对全表GROUP BY

GROUPING()函数只能配合 ROLLUP 和 CUBE 使用,GROUPING()接收一列,如果此列不为空则返回0,如果为空则返回1.

你可能感兴趣的:(建表sql,group by 分组汇总)