我如何按月分组所有行数据,而不是使用group by来消除某些日期

时间:2017-06-26 11:40:43

标签: mysql

我很难按日期对所有行数据进行分组。 这是我的表

id     date       Company
---|----------|-------------
 1 |2017-06-25|   Inzpect
 2 |2017-07-04|   Inzpect  
 3 |2017-06-25|   Meralco
 4 |2017-06-27|   Ginebra
 5 |2017-06-26|   Inzpect

这是我的sql

SELECT date ,company FROM tbl_reports WHERE YEAR(date) = '2017' group by date

这是我到达我的sql的结果

    date       Company
------------|----------
 2017-06-25 |  Inzpect
 2017-06-26 |  Inzpect  
 2017-06-27 |  Ginebra
 2017-07-04 |  Inzpect  

为什么它没有从我的表中获取所有数据并消除我的一行

我想要获得的是我想要获取所有行并按日期对其进行分组,但它始终会使用相同日期的某些行:/。

   date       Company
------------|----------
 2017-06-25 |  Inzpect
 2017-06-25 |  Meralco
 2017-06-26 |  Inzpect  
 2017-06-27 |  Ginebra
 2017-07-04 |  Inzpect 
你可以帮助我们:(

3 个答案:

答案 0 :(得分:1)

尝试以下查询:

SELECT `date`, company
FROM tbl_reports
WHERE YEAR(`date`) = '2017'
order by `date`;

答案 1 :(得分:1)

首先,year()是一个返回数字的函数,因此不要在比较中放置单引号。这样更好:

where year(date) = 2017

其次,直接进行日期比较更好(性能),而不是使用函数。

其他人提到你似乎想要order by。这是查询的一个很好的版本:

select r.date, r.company 
from tbl_reports r
where r.date >= '2017-01-01' and r.date < '2018-01-01'
order by r.date;

答案 2 :(得分:0)

您似乎需要ORDER BY而不是GROUP BY

这样的聚合函数
SELECT date ,company FROM tbl_reports WHERE YEAR(date) = '2017' ORDER BY date

GROUP BY GROUP BY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集分组为一列或多列。

ORDER BY ORDER BY关键字默认按升序对记录进行排序。要按降序对记录进行排序,请使用DESC关键字。