【问题标题】:Mysql - it´s possible use Group By semester?Mysql - 可以按学期使用分组吗?
【发布时间】:2012-08-10 05:35:26
【问题描述】:

我需要在查询中使用每学期分组。有谁知道有什么方法可以做到这一点?

如果我使用:

 `HAVING Date Between '2012-01 'and '2012-06'`

我相信它会起作用,但不会是查询的正确结果。

感谢任何帮助

【问题讨论】:

  • 请发布您的完整查询和表架构 - 让人们随机猜测他们是什么并不能帮助人们回答您的问题。哦,再加上 - 你希望你的结果集看起来像什么也很好

标签: mysql date group-by


【解决方案1】:

你可以用这个-

+------+------------+
| id   | date       |
+------+------------+
| 1    | 2012-08-14 |
| 2    | 2012-09-20 |
| 3    | 2012-05-14 |
| 4    | 2012-05-08 |
| 5    | 2012-08-16 |
+------+------------+

INSERT INTO table_name VALUES 
  (1, '2012-08-14'),
  (2, '2012-09-20'),
  (3, '2012-05-14'),
  (4, '2012-05-08'),
  (5, '2012-08-16');

SELECT
  YEAR(date) year,
  IF(MONTH(date) < 7, 1, 2) semester,
  COUNT(*)
FROM
  table_name
GROUP BY
  year, semester;

+------+----------+----------+
| year | semester | COUNT(*) |
+------+----------+----------+
| 2012 |        1 |        2 |
| 2012 |        2 |        3 |
+------+----------+----------+

使用 HAVING 子句 -

SELECT
  YEAR(date) year,
  IF(MONTH(date) < 7, 1, 2) semester,
  COUNT(*)
FROM
  table_name
GROUP BY
  year, semester
HAVING
  semester = 1

+------+----------+----------+
| year | semester | COUNT(*) |
+------+----------+----------+
| 2012 |        1 |        2 |
+------+----------+----------+

【讨论】:

  • 谢谢,这个回答就够了
  • 这个查询对我有用,但如果使用有子句,则不能正常工作,返回 0 个结果:SELECT YEAR(date) year, IF(MONTH(date) &lt; 7, 1, 2) semester, COUNT(*) FROM table_name GROUP BY year, semester HAVING semester = 1
  • 我尝试使用HAVING semester = 1,但不适合我。我认为这很奇怪,但它是这样工作的:HAVING semester &lt; 2(第一学期)或HAVING semester &gt; 1(第二学期),谢谢你的帮助。
  • 嗯,应该可以了。我在示例中添加了 INSERT 语句。按原样尝试所有示例。
【解决方案2】:

我设法解决了只能获得第一学期或第二学期的问题。

只获得第一学期:

SELECT
  YEAR(date) year,
  IF(MONTH(date) < 7, 1, 2) semester,
  COUNT(*)
FROM
  table_name
WHERE 
  MONTH(date) NOT IN(7,8,9,10,11,12)    
GROUP BY
  year, semester;

感谢所有帮助。

【讨论】:

    【解决方案3】:

    你不能得到任何日期学期:

    FLOOR( ( MONTH(date)-1) / 6 ) + 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 2021-03-03
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      相关资源
      最近更新 更多