【问题标题】:How to get rows for each month separately in mysql如何在mysql中分别获取每个月的行
【发布时间】:2016-03-07 21:29:28
【问题描述】:

我有一张如下表

CREATE TABLE IF NOT EXISTS `titas_clp_invoice_master` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `customer_id` bigint(20) NOT NULL,
  `store_id` bigint(20) NOT NULL,
  `invoice_no` varchar(255) NOT NULL,
  `invoice_date` date NOT NULL,
  `amount` bigint(255) NOT NULL,
  `product_name` varchar(255) NOT NULL,
  `isdeleted` varchar(1) NOT NULL,
  `invoice_month` varchar(255) NOT NULL,
  `invoice_year` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;

现在我想要这样的东西

一年中每个月的总交易量分别。比如 2015 年 12 月的 1 笔交易、2016 年 1 月的 2 笔交易、2016 年 2 月的 3 笔交易等等。

【问题讨论】:

  • 你尝试了什么。显示您的查询?
  • 哪个是前导日期字段?
  • GROUP BY 会有所帮助。
  • 3 月份的 4 笔交易? 4 月份有 5 笔交易?
  • 您需要列出计数为 0 的月份吗?

标签: mysql


【解决方案1】:

MySQL 的开发人员花费了相当长的时间来开发出色的date functions - 你应该使用它们。不需要invoice_yearinvoice_month,因为您已经将invoice_date 作为date 格式化的列。你可以使用

SELECT invoice_date, count(*) 
FROM titas_clp_invoice_master
GROUP BY YEAR(invoice_date), MONTH(invoice_date)

【讨论】:

  • 两个演员表比使用两列更广泛,我不明白这个答案如何在他要求另一件事时显示 DATE - COUNT 时得到支持。
  • @sagi -- 很可能是因为它是正确的用法,并且使用 varchar 列作为日期是不好的做法......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多