java - 如何编写Mysql查询以根据日期从数据库中获取数据?

标签 java mysql

我的数据库表是::

attendence date     admission number         attendence

  2013-10-2         LSTM-0008/2013-2014      present

 2013-10-19         LSTM-0008/2013-2014      absent

  2013-10-20         LSTM-0008/2013-2014      present

上面一个是我的数据库表。

我想在这里显示这样的表 totalworkingdays 是基于数据库表的那个月的存在和缺席总数:

 MonthName     totalWorkingDays     Present     absent

 october            3                  2          1

我这样写 mysql 查询:

select distinct
    monthname(attendencedate) as monthname,
    count(*) as totalworkingdays
from  lstms_attendence where
    attendencedate> '2013-10-01' and attendencedate<'2013-10-31'
    and addmissionno='LSTM-0008/2013-2014'
GROUP BY
    monthname(attendencedate),
    sum(CASE WHEN attendence = 'present' THEN 1 ELSE 0 END) as present,
    SUM(CASE WHEN attendence = 'absent' THEN 1 ELSE 0 END) AS absent
FROM lstms_attendence
WHERE addmissionno = 'LSTM-0008/2013-2014'
GROUP BY monthname(attendencedate);

我得到了这样的错误::

错误代码:1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行使用 near 'as present,SUM(CASE WHEN attendence = 'absent' THEN 1 ELSE 0 END) AS absent FRO' 的正确语法 (用了 0 毫秒)

任何人都给我建议。提前致谢。

最佳答案

请记住始终以更易读的方式放置查询。

滚动的需要令人厌恶。

有点乱

几个 FROM 和 GROUP BY 子句...

应该看起来更像

SELECT DISTINCT
    monthname(attendencedate) as monthname,
    count(*) as totalworkingdays,
    sum(CASE WHEN attendence = 'present' THEN 1 ELSE 0 END) as present,
    SUM(CASE WHEN attendence = 'absent' THEN 1 ELSE 0 END) AS absent
FROM  lstms_attendence
WHERE
    attendencedate> '2013-10-01' and attendencedate<'2013-10-31'
    and addmissionno='LSTM-0008/2013-2014'
GROUP BY
    monthname(attendencedate)

AFAIR 你不能将 AS 放在 GROUP BY 子句中。这就是 MySQL 告诉你的。

附言。未测试

关于java - 如何编写Mysql查询以根据日期从数据库中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20015627/

相关文章:

java - 超时后Executor Service剩余任务

java - 如果某个对象的 ID 不在 ID 列表中,则从列表中删除该对象的最佳方法是什么?

php - 无论我做什么,WordPress 都使用已弃用的 mysql_connect

Mysql CASE 语句 - 查找字段的波动百分比

mysql - SQL #1066 - 不是唯一的表/别名 :

mysql - ElFinder 多根 MySQL 驱动

java - 没有找到给定的测试包括 :

java - 如何使用 apache poi 计算 docx 中的 =SUM(Above) 函数

php - 它只发布 "array"的值,而不是预期值

java - org.hibernate.AnnotationException : @OneToOne or @ManyToOne on entities. Ques#tion.examId 引用了一个未知实体:long