http://sqlfiddle.com/#!2/6a6b1
上面给出了方案..我想做的就是得到结果作为销售/月的总数...用户将输入开始日期和结束日期,我可以生成(在PHP中)所有月份和那些日期的岁月。例如,如果我想知道12个月的“销售”总数,我知道我可以运行12个具有开始和结束日期的单个查询,但我想只运行一个查询结果如下:
Month numofsale
January - 2
Feb-1
March - 23
Apr - 10
依旧......
或者只是没有月份的销售清单,然后我可以将它与PHP中生成的月份数组配对......任何想法......
从sqlfiddle.com粘贴的编辑/架构和数据:
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');
答案 0 :(得分:25)
SELECT DATE_FORMAT(date, "%m-%Y") AS Month, SUM(numofsale)
FROM <table_name>
WHERE <where-cond>
GROUP BY DATE_FORMAT(date, "%m-%Y")
在你的小提琴演示中检查它是否适合我(删除where
条款进行测试)
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")
返回以下结果
MONTH COUNT(*)
07-2012 1
08-2012 2
09-2012 1
10-2012 3
答案 1 :(得分:1)
您可以尝试查询,如下所示
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-01
和2012-12-17
是来自表单的日期输入。如果存在于数据库中,它将返回特定月份的销售总额。
感谢
答案 2 :(得分:0)
尝试此查询 -
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()。
答案 3 :(得分:0)
SELECT YEAR(act_date), MONTH(act_date), COUNT(*)
FROM lead_activity2
GROUP BY YEAR(act_date), MONTH(act_date)
要按月获取数据或根据列获取任何其他数据,您必须添加GROUP BY。
您可以向GROUP BY添加许多列或计算值。
我认为“销售数量”表示行数。
答案 4 :(得分:0)
有时您可能希望月份名称为Jan,Feb,Mar ... Dec可能为FusionChart等图表
SELECT DATE_FORMAT(date, "%M") AS Month, SUM(numofsale)
FROM <Table_name>
GROUP BY DATE_FORMAT(date, "%M")
结果在表格中如下所示
MONTH COUNT(*)
Jul 1
Aug 2
SEP 1
OCT 3