0

我正在尝试编写一个查询以从我的数据库中获取在表中特定日期发生的记录计数。我的查询如下所示:

SELECT
  count(id),
  A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending';

它给我的只是一张唱片:

50  Pending 2013    April   16  Monday

为什么它没有给我列出的所有记录。例如,我在星期一插入了 50 条记录,星期二插入了 20 条,依此类推。我怎样才能得到这样的列表?为什么函数 WEEK(A.dateRequested) 返回16一个月有 4 周?

4

3 回答 3

2

您正在使用count(id)没有group by. MySQL 的工作方式是将其转换为空的group by. 您将获得count(id)整个表格的 ,而其他字段将设置为一个随机行。

按工作日列出待处理记录的数量:

SELECT  DAYNAME(A.dateRequested)
,       count(id),
FROM    ASSESSMENT A 
where   A.status = 'Pending'
group by
        DAYNAME(A.dateRequested)
于 2013-06-20T11:16:06.637 回答
0
  1. 第 16 周是一年中的一周,而不是一个月中的一周。
  2. 您的查询不是查询今天发生的项目。它正在寻找具有待处理状态的项目。将其更改为:

    WHERE A.dateRequested = '2013-06-20'

  3. 您正在使用 COUNT 函数,除非您 GROUP BY 某些东西,否则它将只返回一个结果。

于 2013-06-20T11:17:01.223 回答
0

试试这个:-

SELECT
  count(id),
  A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending'
GROUP BY A.status,
  YEAR(A.dateRequested),
  MONTHNAME(A.dateRequested),
  WEEK(A.dateRequested),
  DAYNAME(A.dateRequested)
于 2013-06-20T11:17:51.113 回答