季度日期优秀的公司结果,我有一个表'QuarterlyReport'
其中有多个公司的季度利润数字与下面的列'CompanyName'
,'QuarterEndDate'
& 'Profit'
过滤掉基于MySQL的
|CompanyName|QuarterEndDate|Profit| |---------------------------------| |A |2013-06-30 |29878 | |A |2013-09-30 |33712 | |A |2013-12-31 |60764 | |A |2014-03-31 |260734| |B |2013-06-30 |-1234 | |B |2013-09-30 |0 | |B |2013-12-31 |20114 | |B |2014-03-31 |-984 | ...
我试图构建一个MySQL查询看看哪个公司的利润表现每隔一个季度(Q4> Q3> Q2> Q1)就会有所增加,并有1年(4个季度)的日期范围。
:在实施例以上的情况下,只有公司“A”将满足这一要求,并应返回的查询结果
目前我只能够构建查询(Q4> 0 AND Q3> 0 AND Q2 > 0)使用关注MySQL查询:
SELECT * FROM (SELECT q.CompanyName, q.QuarterEndDate, q.Profit FROM `QuarterlyReport` q) a
WHERE a.QuarterEndDate >= '2013-06-30' AND
a.QuarterEndDate < '2014-06-30' AND
a.CompanyName IN (SELECT CompanyName FROM `QuarterlyReport` WHERE
a.CompanyName IN (SELECT Q4.CompanyName FROM `QuarterlyReport` AS Q4 WHERE Q4.QuarterEndDate = '2014-03-31' AND Q4.Profit > '0') AND
a.CompanyName IN (SELECT Q3.CompanyName FROM `QuarterlyReport` AS Q3 WHERE Q3.QuarterEndDate = '2013-12-31' AND Q3.Profit > '0') AND
a.CompanyName IN (SELECT Q2.CompanyName FROM `QuarterlyReport` AS Q2 WHERE Q2.QuarterEndDate = '2013-09-30' AND Q2.Profit > '0') AND
a.CompanyName IN (SELECT Q1.CompanyName FROM `QuarterlyReport` AS Q1 WHERE Q1.QuarterEndDate = '2013-06-30' AND Q1.Profit > '0')
GROUP BY a.CompanyName ORDER BY a.CompanyName ASC
任何人都可以提出一些想法,如何存档我的目标查询?
这是一个非常effici ent查询命令并且很容易修改以适应其他过滤要求! – Dennis 2014-08-29 06:59:41