【问题标题】:SQL Query to Count total entries by Month/YearSQL 查询按月/年计算总条目
【发布时间】:2020-04-13 07:49:15
【问题描述】:

我正在尝试统计我的 SQL 表中每个月的条目总数。

CREATE TABLE table1
    (`ID` int, `date` date, `job` varchar)
;

INSERT INTO table1
    (`ID`, `date`, `job`)
VALUES
    (1, '2019-01-01', job A),
    (2, '2019-01-03', job B),
    (3, '2019-02-02', job C),
    (4, '2019-04-05', job D),
    (5, '2019-05-03', job E),
    (6, '2019-07-07', job F)
;

Select
DATE_FORMAT(`date`,'%M %Y') MontnameYear,
COUNT(job) counter
FROM table1
GROUP BY DATE_FORMAT(`date`,'%M %Y')
ORDER by mdate;

我尝试了上述各种不同的变体,但没有什么能让我每个月都数一数。我有一种感觉,我错过了一些明显但看不到的东西:-(

任何帮助都会很棒

【问题讨论】:

  • 请显示您想要的结果。此外,“datatable”不是 SQL 数据库,因此不清楚您要查找的代码类型。
  • @GordonLinoff GMB 给了我我需要的答案,谢谢:-)。我正在从 SQL 数据库填充数据表

标签: mysql sql date datatable group-by


【解决方案1】:

您的查询看起来很好,除了 group by 子句之外,它引用了查询中不存在的列别名(这是一个语法错误)。

考虑:

Select
    DATE_FORMAT(`date`,'%M %Y') MontnameYear,
    COUNT(*) counter
FROM table1
GROUP BY DATE_FORMAT(`date`,'%M %Y')
ORDER by MIN(`date`)

Demo on DB FIddle

Montname年份 |柜台 :------------ | ------: 2019 年 1 月 | 2 2019 年 2 月 | 1 2019 年 4 月 | 1 2019 年 5 月 | 1 2019 年 7 月 | 1

旁注:您的示例脚本存在缺陷:

  • 必须为varchar 列指定长度(例如varchar(10)
  • job A 等字符串必须用单引号括起来

【讨论】:

  • 感谢您的回答。当我尝试运行时出现错误 - dbfiddle.uk/… 有什么想法吗?
  • @PaulMcF87:这些问题来自您的create/insert 脚本。请参阅我更新的答案(以及我的数据库小提琴)。
  • 非常感谢。排序:-)
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
相关资源
最近更新 更多