首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MYSQL查询-按月获取合计

MYSQL查询-按月获取合计
EN

Stack Overflow用户
提问于 2012-10-31 15:00:01
回答 5查看 32.6K关注 0票数 15

http://sqlfiddle.com/#!2/6a6b1

该方案如上所示。我所要做的就是获得销售/月销售总额的结果...用户将输入开始日期和结束日期,我可以生成(在PHP中)这些日期的所有月份和年份。例如,如果我想知道12个月的“销售”总数,我知道我可以运行12个单独的查询,包括开始和结束日期,但我只想运行一个查询,结果如下:

代码语言:javascript
运行
复制
Month     numofsale
January - 2  
Feb-1
March - 23
Apr - 10

以此类推。

或者只是一个没有月份的销售列表,然后我可以将它与PHP ...any想法中生成的月份数组配对……

编辑/模式和从sqlfiddle.com粘贴的数据:

代码语言:javascript
运行
复制
CREATE TABLE IF NOT EXISTS `lead_activity2` (
  `lead_activity_id` int(11) NOT NULL AUTO_INCREMENT,
  `sp_id` int(11) NOT NULL,
  `act_date` datetime NOT NULL,
  `act_name` varchar(255) NOT NULL,
  PRIMARY KEY (`lead_activity_id`),
  KEY `act_date` (`act_date`),
  KEY `act_name` (`act_name`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1  ;

INSERT INTO `lead_activity2` (`lead_activity_id`, `sp_id`, `act_date`, `act_name`) VALUES
(1, 5, '2012-10-16 16:05:29', 'sale'),
(2, 5, '2012-10-16 16:05:29', 'search'),
(3, 5, '2012-10-16 16:05:29', 'sale'),
(4, 5, '2012-10-17 16:05:29', 'DNC'),
(5, 5, '2012-10-17 16:05:29', 'sale'),
(6, 5, '2012-09-16 16:05:30', 'SCB'),
(7, 5, '2012-09-16 16:05:30', 'sale'),
(8, 5, '2012-08-16 16:05:30', 'sale'),
(9, 5,'2012-08-16 16:05:30', 'sale'),
(10, 5, '2012-07-16 16:05:30', 'sale');
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-31 15:04:38

代码语言:javascript
运行
复制
SELECT DATE_FORMAT(date, "%m-%Y") AS Month, SUM(numofsale)
FROM <table_name>
WHERE <where-cond>
GROUP BY DATE_FORMAT(date, "%m-%Y") 

在您的小提琴演示中检查以下内容它对我有效(删除where子句以进行测试)

代码语言:javascript
运行
复制
SELECT DATE_FORMAT(act_date, "%m-%Y") AS Month, COUNT(*)
FROM lead_activity2
WHERE <where-cond-here> AND act_name='sale'
GROUP BY DATE_FORMAT(act_date, "%m-%Y") 

它返回以下结果

代码语言:javascript
运行
复制
MONTH   COUNT(*)
07-2012 1
08-2012 2
09-2012 1
10-2012 3
票数 33
EN

Stack Overflow用户

发布于 2012-10-31 15:16:40

您可以尝试如下所示的查询

代码语言:javascript
运行
复制
select  SUM(`SP_ID`) AS `Total` , DATE_FORMAT(act_date, "%M") AS Month, Month(`ACT_DATE`) AS `Month_number` from `lead_activity2`  WHERE `ACT_DATE` BETWEEN '2012-05-01' AND '2012-12-17' group by Month(`ACT_DATE`)

这里的2012-05-012012-12-17是表单中的日期输入。如果存在于数据库中,它将返回特定月份的销售总和。

谢谢

票数 2
EN

Stack Overflow用户

发布于 2012-10-31 15:05:22

尝试这个查询-

代码语言:javascript
运行
复制
SELECT
  MONTH(act_date) month, COUNT(*)
FROM
  lead_activity2
WHERE
  YEAR(act_date) = 2012 AND act_name = 'sale'
GROUP BY
  month

检查WHERE条件是否适合您- act_name = 'sale'

如果要输出月份名称,请使用MONTHNAME()函数而不是 month ()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13152796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档