SELECT
 COUNT( CASE WHEN month(login.cLoginTime)="1" THEN `user`.strGuid END) 一月
,COUNT( CASE WHEN month(login.cLoginTime)="2" THEN `user`.strGuid END) 二月
,COUNT( CASE WHEN month(login.cLoginTime)="3" THEN `user`.strGuid END) 三月
FROM aocslogininfo login, aocsuserinfo `user`,aocssiteinfo site
WHERE `user`.strGuid=login.strUserGuid AND site.strGuid=`user`.strGuidForSiteInfo 
/*AND DATE(login.cLoginTime )NOT IN (SELECT DATE(holiday) FROM holiday )*/
GROUP BY site.strDistrict
,count( case when month(login.cLoginTime)="12" then `user`.strGuid end) 十二月
FROM aocslogininfo login, aocsuserinfo `user`,aocssiteinfo site
WHERE `user`.strGuid=login.strUserGuid AND site.strGuid=`user`.strGuidForSiteInfo 
/*AND DATE(login.cLoginTime )NOT IN (SELECT DATE(holiday) FROM holiday )*/
GROUP BY site.strDistrict求解决 当某个人某天多次签到的时候 这个sql语句统计签到次数的时候 会把多次签到的次数也算进去 求解决 怎么才能不把多次签到的次数统计进去

解决方案 »

  1.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    CREATE DATABASE /*!32312 IF NOT EXISTS*/`attendforsiteserver` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `attendforsiteserver`;/*Table structure for table `aocslogininfo` */DROP TABLE IF EXISTS `aocslogininfo`;CREATE TABLE `aocslogininfo` (
      `key` int(10) unsigned NOT NULL auto_increment,
      `strGuid` char(6) default NULL,
      `strUserGuid` char(6) default NULL COMMENT '对应AOCSUserInfo表中strGuid',
      `strUserName` varchar(10) default NULL COMMENT '对应AOCSUserInfo表中strUserName',
      `cLoginTime` datetime default NULL COMMENT '登录时间',
      PRIMARY KEY  (`key`),
    ) /*Data for the table `aocslogininfo` */insert  into `aocslogininfo`(`key`,`strGuid`,`strUserGuid`,`strUserName`,`cLoginTime`,`eSyncType`,`iState`) values (1,'c111','b11','C111','2012-01-17 00:12:00',NULL,NULL),(2,'c112','b11','C112','2012-01-17 00:23:14',NULL,NULL),(3,'c121','b12','C121','2012-02-17 00:00:01',NULL,NULL),(4,'c122','b12','C122','2012-02-17 00:00:02',NULL,NULL),(7,'c221','b22','C221','2012-02-17 00:00:05',NULL,NULL),(8,'c222','b22','C222','2012-02-17 00:00:06',NULL,NULL),(9,'c321','b32','C321','2012-02-17 00:00:09',NULL,NULL),(10,'c322','b32','C322','2012-02-17 00:00:12',NULL,NULL),(11,'c211','b21','C211','2012-03-17 00:00:03',NULL,NULL),(12,'c212','b21','C212','2012-03-17 00:00:04',NULL,NULL),(13,'c311','b31','C311','2012-04-17 00:00:07',NULL,NULL),(14,'c312','b31','C312','2012-04-17 00:00:08',NULL,NULL);/*Table structure for table `aocssiteinfo` */DROP TABLE IF EXISTS `aocssiteinfo`;CREATE TABLE `aocssiteinfo` (
      `Key` int(10) unsigned NOT NULL auto_increment COMMENT '',
      `strGuid` char(6) NOT NULL,
      `strProjectName` varchar(20) default NULL COMMENT '项目名称',
      `strDistrict` varchar(20) default NULL COMMENT '区县',
      PRIMARY KEY  (`Key`),
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    insert  into `aocssiteinfo`(`Key`,`strGuid`,`strHardID`,`cCreateTime`,`cModifyTime`,`eSyncType`,`iState`,`strProjectName`,`strAddress`,`strBuilder`,`strDesigner`,`strContractor`,`strDistrict`,`iDistrict`) values (1,'a11',NULL,NULL,NULL,0,0,'A11',NULL,'11A',NULL,NULL,'崇安区',1),(2,'a12',NULL,NULL,NULL,0,0,'A12',NULL,'12A',NULL,NULL,'滨湖区',2),(3,'a13',NULL,NULL,NULL,0,0,'A13',NULL,'13A',NULL,NULL,'南常区',3);/*Table structure for table `aocsuserinfo` */DROP TABLE IF EXISTS `aocsuserinfo`;CREATE TABLE `aocsuserinfo` (
      `key` int(11) NOT NULL auto_increment,
      `strGuid` char(6) NOT NULL,
      `strUserName` varchar(10) NOT NULL COMMENT '姓名',
      `strGuidForSiteInfo` char(6) default NULL COMMENT '对应的项目基本信息GUID',
      PRIMARY KEY  (`key`),
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;/*Data for the table `aocsuserinfo` */insert  into `aocsuserinfo`(`key`,`strGuid`,`cCreateTime`,`cModifyTime`,`cAuditTime`,`strAuditor`,`eSyncType`,`iState`,`strUserName`,`strID`,`strCertificateNumber`,`strJobTitle`,`strGuidForSiteInfo`) values (1,'b11',NULL,NULL,NULL,NULL,0,NULL,'B11',NULL,NULL,NULL,'a11'),(2,'b12',NULL,NULL,NULL,NULL,0,NULL,'B12',NULL,NULL,NULL,'a11'),(3,'b21',NULL,NULL,NULL,NULL,0,NULL,'B21',NULL,NULL,NULL,'a12'),(4,'b22',NULL,NULL,NULL,NULL,0,NULL,'B22',NULL,NULL,NULL,'a12'),(5,'b31',NULL,NULL,NULL,NULL,0,NULL,'B31',NULL,NULL,NULL,'a13'),(6,'b32',NULL,NULL,NULL,NULL,0,NULL,'B32',NULL,NULL,NULL,'a13');/*Table structure for table `holiday` */DROP TABLE IF EXISTS `holiday`;CREATE TABLE `holiday` (
      `holiday` date NOT NULL,
      PRIMARY KEY  (`holiday`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;/*Data for the table `holiday` */insert  into `holiday`(`holiday`) values ('2012-01-17'),('2012-01-19');
    - -  图里的2 应该是1才对
      

  3.   


    CREATE TABLE `aocssiteinfo` (
      `Key` int(10) unsigned NOT NULL auto_increment COMMENT '注意,增长跨度为200.要每个client初始值要设置不一样。',
      `strGuid` char(36) NOT NULL,
      `strHardID` varchar(200) NOT NULL COMMENT '设备型号',
      `cCreateTime` datetime NOT NULL COMMENT '创建时间',
      `cModifyTime` datetime NOT NULL COMMENT '修改时间',
      `cBeginTime`  datetime NOT NULL COMMENT '开工时间',
      `cEndTime`    datetime NOT NULL COMMENT '竣工时间',  `eSyncType` tinyint(4) unsigned NOT NULL default '0' COMMENT '数据库同步字段',
      `iState` int(11) unsigned NOT NULL default '0' COMMENT '状态',
      `strProjectName` varchar(200) NOT NULL COMMENT '项目名称',
      `strAddress` varchar(200) NOT NULL COMMENT '项目地址',
      `strBuilder` varchar(200) NOT NULL COMMENT '建设单位',
      `strDesigner` varchar(200) NOT NULL COMMENT '设计单位',
      `strContractor` varchar(200) NOT NULL COMMENT '施工总承包',
      `strDistrict`  varchar(200)  NOT NULL COMMENT '区县',
      `iDistrict`    tinyint       NOT NULL COMMENT '区县的数字形式',
      `strReserve1` varchar(200) NOT NULL COMMENT '储备字段',
      `strReserve2` varchar(200) NOT NULL COMMENT '储备字段',
      `strReserve3` text NOT NULL COMMENT '储备字段',
      
      PRIMARY KEY  (`Key`),
      KEY `strGuid` (`strGuid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    我错了 不该精简的
      

  4.   

    aocslogininfo 这个表 先去重(去重的aocslogininfo表) login
      

  5.   

    - - 粘错了 
    完整的是这个
    /*
    SQLyog 企业版 - MySQL GUI v7.14 
    MySQL - 5.0.45-community-nt : Database - attendforsiteserver
    *********************************************************************
    */
    /*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;CREATE DATABASE /*!32312 IF NOT EXISTS*/`attendforsiteserver` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `attendforsiteserver`;/*Table structure for table `aocslogininfo` */CREATE TABLE `aocslogininfo` (
      `key` int(10) unsigned NOT NULL auto_increment,
      `strGuid` char(36) default NULL,
      `strUserGuid` char(36) default NULL COMMENT '对应AOCSUserInfo表中strGuid',
      `strUserName` varchar(100) default NULL COMMENT '对应AOCSUserInfo表中strUserName',
      `cLoginTime` datetime default NULL COMMENT '登录时间',
      `eSyncType` tinyint(3) unsigned default NULL COMMENT '数据库同步字段',
      `iState` int(10) unsigned default NULL COMMENT '状态',
      PRIMARY KEY  (`key`),
      KEY `Guid` (`strGuid`),
    ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;/*Data for the table `aocslogininfo` */insert  into `aocslogininfo`(`key`,`strGuid`,`strUserGuid`,`strUserName`,`cLoginTime`,`eSyncType`,`iState`) values (1,'c111','b11','C111','2012-01-17 00:12:00',NULL,NULL),(2,'c112','b11','C112','2012-01-17 00:23:14',NULL,NULL),(3,'c121','b12','C121','2012-02-17 00:00:01',NULL,NULL),(4,'c122','b12','C122','2012-02-17 00:00:02',NULL,NULL),(7,'c221','b22','C221','2012-02-17 00:00:05',NULL,NULL),(8,'c222','b22','C222','2012-02-17 00:00:06',NULL,NULL),(9,'c321','b32','C321','2012-02-17 00:00:09',NULL,NULL),(10,'c322','b32','C322','2012-02-17 00:00:12',NULL,NULL),(11,'c211','b21','C211','2012-03-17 00:00:03',NULL,NULL),(12,'c212','b21','C212','2012-03-17 00:00:04',NULL,NULL),(13,'c311','b31','C311','2012-04-17 00:00:07',NULL,NULL),(14,'c312','b31','C312','2012-04-17 00:00:08',NULL,NULL);/*Table structure for table `aocssiteinfo` */CREATE TABLE `aocssiteinfo` (
      `Key` int(10) unsigned NOT NULL auto_increment COMMENT ,
      `strGuid` char(36) NOT NULL,
      `strHardID` varchar(200) default NULL COMMENT '设备型号',
      `cCreateTime` datetime default NULL COMMENT '创建时间',
      `cModifyTime` datetime default NULL COMMENT '修改时间',
      `eSyncType` tinyint(4) unsigned NOT NULL default '0' COMMENT '数据库同步字段',
      `iState` int(11) unsigned default '0' COMMENT '状态',
      `strProjectName` varchar(200) default NULL COMMENT '项目名称',
      `strAddress` varchar(200) default NULL COMMENT '项目地址',
      `strBuilder` varchar(200) default NULL COMMENT '建设单位',
      `strDesigner` varchar(200) default NULL COMMENT '设计单位',
      `strContractor` varchar(200) default NULL COMMENT '施工总承包',
      `strDistrict` varchar(200) default NULL COMMENT '区县',
      PRIMARY KEY  (`Key`),
      KEY `strGuid` (`strGuid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;/*Data for the table `aocssiteinfo` */insert  into `aocssiteinfo`(`Key`,`strGuid`,`strHardID`,`cCreateTime`,`cModifyTime`,`eSyncType`,`iState`,`strProjectName`,`strAddress`,`strBuilder`,`strDesigner`,`strContractor`,`strDistrict`,`iDistrict`) values (1,'a11',NULL,NULL,NULL,0,0,'A11',NULL,'11A',NULL,NULL,'崇安区',1),(2,'a12',NULL,NULL,NULL,0,0,'A12',NULL,'12A',NULL,NULL,'滨湖区',2),(3,'a13',NULL,NULL,NULL,0,0,'A13',NULL,'13A',NULL,NULL,'南常区',3);/*Table structure for table `aocsuserinfo` */CREATE TABLE `aocsuserinfo` (
      `key` int(11) NOT NULL auto_increment,
      `strGuid` char(36) NOT NULL,
      `cCreateTime` datetime default NULL COMMENT '创建时间',
      `cModifyTime` datetime default NULL COMMENT '修改时间',
      `cAuditTime` datetime default NULL COMMENT '审核时间',
      `strAuditor` varchar(100) default NULL COMMENT '审核人',
      `eSyncType` tinyint(3) unsigned NOT NULL default '0' COMMENT '数据库同步字段',
      `iState` int(10) unsigned default NULL COMMENT '状态',
      `strUserName` varchar(100) NOT NULL COMMENT '姓名',
      `strID` varchar(100) default NULL COMMENT '身份证',
      `strCertificateNumber` varchar(100) default NULL COMMENT '职业证书号',
      `strJobTitle` varchar(100) default NULL COMMENT '工作职务',
      `strGuidForSiteInfo` char(36) default NULL COMMENT '对应的项目基本信息GUID',
      PRIMARY KEY  (`key`),
      KEY `strGuid` (`strGuid`),
      KEY `GuidForSiteInfo` (`strGuidForSiteInfo`),
      KEY `UserName` (`strUserName`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;/*Data for the table `aocsuserinfo` */insert  into `aocsuserinfo`(`key`,`strGuid`,`cCreateTime`,`cModifyTime`,`cAuditTime`,`strAuditor`,`eSyncType`,`iState`,`strUserName`,`strID`,`strCertificateNumber`,`strJobTitle`,`strGuidForSiteInfo`) values (1,'b11',NULL,NULL,NULL,NULL,0,NULL,'B11',NULL,NULL,NULL,'a11'),(2,'b12',NULL,NULL,NULL,NULL,0,NULL,'B12',NULL,NULL,NULL,'a11'),(3,'b21',NULL,NULL,NULL,NULL,0,NULL,'B21',NULL,NULL,NULL,'a12'),(4,'b22',NULL,NULL,NULL,NULL,0,NULL,'B22',NULL,NULL,NULL,'a12'),(5,'b31',NULL,NULL,NULL,NULL,0,NULL,'B31',NULL,NULL,NULL,'a13'),(6,'b32',NULL,NULL,NULL,NULL,0,NULL,'B32',NULL,NULL,NULL,'a13');/*Table structure for table `holiday` */CREATE TABLE `holiday` (
      `holiday` date NOT NULL,
      PRIMARY KEY  (`holiday`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;/*Data for the table `holiday` */insert  into `holiday`(`holiday`) values ('2012-01-17'),('2012-01-19');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;