mysql-MYSQL 一个比较复杂的查询语句咨询

问题描述

MYSQL 一个比较复杂的查询语句咨询

hi 我的表的结构大致是这样的
项目编号 预计成交日期 状态更新日期 项目状态
lead-1 2016-6-4 2016-3-1 跟踪
lead-1 2016-6-5 2016-3-2 谈判中
lead-1 2016-7-5 2016-3-3 审核中
lead-2 2016-3-5 2016-3-1 跟踪
lead-2 2016-4-9 2016-3-2 审核中
想得到的结果是这样的
3月 4月 5月 6月 7月
跟踪 0 0 0 0 0
谈判中 0 0 0 0 0
审核中 0 1 0 0 1
或者 想这样的结果
月份 状态 数量
3月 跟踪 0
3月 谈判中 0
3月 审核中 0
4月 跟踪 0
4月 谈判中 0
4月 审核中 1
5月 跟踪 0
5月 谈判中 0
5月 审核中 0
6月 跟踪 0
6月 谈判中 0
6月 审核中 0
7月 跟踪 0
7月 谈判中 0
7月 审核中 1

就是我只统计每一个leadcode的最新状态的那一条数据,根据那一条数据的预计成交日和项目状态进行统计,统计的最终希望的结果如第二个表格或者第三个表格
这个东西,我主要是用来返回给前台给highchart画图用的。。我想把查询的结果json化之后,通过“data.项目状态.月份“或者“data.月份.项目状态”的形式来调用数据,可能做到吗?
非常感谢!

或者有别的思路可以实现差不多内容的也可以,拜托各位大神了

解决方案

就一个“状态更新日期”,某一天leadcode有几条记录,不同的状态,怎么去判断哪一条是最新的呢?

解决方案二:

 create table ta1(
  项目编号 varchar(50),
预计成交日期 varchar(50),
状态更新日期 varchar(50),
项目状态 varchar(50)
);
create table monthtable(
  monthnum varchar(2)
);
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-6-4','2016-3-1','跟踪');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-6-5','2016-3-2','谈判中');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-1','2016-7-5','2016-3-3','审核中');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-2','2016-3-5','2016-3-1','跟踪');
insert into ta1(项目编号,预计成交日期,状态更新日期,项目状态)
values('lead-2','2016-4-9','2016-3-2','审核中');

insert into monthtable(monthnum) values('1');
insert into monthtable(monthnum) values('2');
insert into monthtable(monthnum) values('3');
insert into monthtable(monthnum) values('4');
insert into monthtable(monthnum) values('5');
insert into monthtable(monthnum) values('6');
insert into monthtable(monthnum) values('7');
insert into monthtable(monthnum) values('8');
insert into monthtable(monthnum) values('9');
insert into monthtable(monthnum) values('10');
insert into monthtable(monthnum) values('11');
insert into monthtable(monthnum) values('12');

SELECT b1.monthnum,b1.项目状态,ifnull(num,0) 数量 FROM (
SELECT * FROM (
select monthnum from  monthtable,(
select max(mnum) mx,min(mnum) mm from (
 SELECT MONTH(str_to_date(预计成交日期,'%Y-%m-%d')) mnum from ta1
) r
) m where monthnum>=mm and monthnum<=mx
) a1,
(
select distinct 项目状态 from ta1
) a2
) B1
left join (
select R.*,MONTH(str_to_date(预计成交日期,'%Y-%m-%d')) monthnum,1 num from (
SELECT @rownum1 rn ,@rownum1:=@rownum1+1,c.* from ta1 c,(select @rownum1:=1) r
) r,
(
select max(rn) rn1 from (
  SELECT @rownum rn,@rownum:=@rownum+1,c.* from ta1 c,(select @rownum:=1) r
) t group by 项目编号
) k where r.rn = k.rn1
) B2 on B1.monthnum=B2.monthnum and B1.项目状态=B2.项目状态
order by B1.monthnum,B1.项目状态
时间: 2024-12-29 06:56:54

mysql-MYSQL 一个比较复杂的查询语句咨询的相关文章

json-MYSQL 一个比较复杂的查询语句咨询

问题描述 MYSQL 一个比较复杂的查询语句咨询 hi 我的表的结构大致是这样的 项目编号 预计成交日期 状态更新日期 项目状态 lead-1 2016-6-4 2016-3-1 跟踪 lead-1 2016-6-5 2016-3-2 谈判中 lead-1 2016-7-5 2016-3-3 审核中 lead-2 2016-3-5 2016-3-1 跟踪 lead-2 2016-4-9 2016-3-2 审核中 想得到的结果是这样的 3月 4月 5月 6月 7月 跟踪 0 0 0 0 0 谈判中

多表-一个很纠结的查询语句写法?

问题描述 一个很纠结的查询语句写法? 1.一个person表,一个contact表,一个education表,一个experience表. 2.contact,education,experience表中有一个指向person的外键,person 与contact是1对1关系,person与education是1对多关系,person与experience是1对多关系. 3.想写一个查询条件为包含4个表中某些字段的查询语句.如person表中的skill,name:contact中country

给mysql添加一个只有某个数据库查询权限的用户

添加用户: insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values ("192.168.186.1","allen",password("allen"),'','','');  刷新: flush privileges;  授权: grant select on test.* to 'allen'@'192.168.186.1';

SQL Server定义视图查询语句中不能使用的关键字

(1) 不能够带有Into关键字 我们都知道,视图其实就是一组查询语句组成.或者说,视图是封装查询语句的一个工具.在查询语句中,我们可以通过一些关键字来格式化显示的结果.如我们在平时工作中,经常会需要把某张表中的数据跟另外一张表进行合并.此时,数据库管理员就可以利用Select Into语句来完成.先把数据从某个表中查询出来,然后再添加到某个表中.当经常需要类似的操作时,我们是否可以把它制作成一张视图.每次有需要的时候,只需要运行这个视图即可,而不用每次都进行重新书写SQL代码.不过可惜的是,结

SQL Server查询语句运行指标值监测学习总结

前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 利器一.IO统计 通过这个IO统计能为我们分析出当前查询语句所要扫描的数据页的

SQL Server调优系列进阶篇(查询语句运行几个指标值监测)

原文:SQL Server调优系列进阶篇(查询语句运行几个指标值监测) 前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析.   利

我又来提问了,ibatis中数据库查询语句的书写问题

问题描述 我写了一个查询语句: SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM tf_tr_specification where <isNotEmpty property="TechSpecification.speci_no" > speci_no=#TechSpecification.speci_no# </isNotEmpty> <isNotEmpty property="

数据库-问一个mysql查询语句的问题

问题描述 问一个mysql查询语句的问题 例如 我的模糊查询关键字是"手机" 然后我的数据库中的表的字段有描述.价格.地区等 我想"手机"这个关键字 在每一个字段都去判断 ,只要任何一个字段有"手机"这个关键字 都把那一行的所有信息 提取出来 请问这个sql语句怎么写...谢谢了大神们.. 解决方案 select 描述,价格,地区 from tableName where 描述 like '%手机%' or 地区like '%手机%' . 价格肯

十四条实用的MySQL 查询语句

  1. 手动修改密码 某些情况下,我们忘记了管理员的密码.或者站点遭受攻击后,管理员密码被恶意修改了.这个时候,我们能做的就只有重新设置管理员的密码了. 以下查询语句,使用 MySQL 的 MD5() 函数将我们的密码进行 MD5 加密. UPDATE 'wp_users' SET 'user_pass' = MD5('PASSWORD') WHERE 'user_login' ='admin' LIMIT 1; 2. 批量转换日式的作者 大多数刚使用 WordPress 的人可能都是直接使用