首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL获得一年中所有月份的统计数据

MySQL获得一年中所有月份的统计数据
EN

Stack Overflow用户
提问于 2015-10-19 11:37:18
回答 2查看 6.1K关注 0票数 4

我必须做一个SQL查询来获取公司一年中所有月份的收入,但有些月份没有记录。

我使用了以下查询:

代码语言:javascript
复制
SELECT COUNT(wp_dgl_stats.datetime_stamp)*wp_dgl_ads.price as incomes, MONTHNAME(wp_dgl_stats.datetime_stamp) as month
FROM wp_dgl_ads
INNER JOIN wp_dgl_stats ON wp_dgl_stats.id_ad = wp_dgl_ads.id
WHERE YEAR(wp_dgl_stats.datetime_stamp) = 2015
GROUP BY MONTHNAME(wp_dgl_stats.datetime_stamp)

我不得不说,wp_dgl_stats包含了一个记录,记录了用户在web特定空间(广告显示)的每一次点击,并引用了广告和日期时间戳。

此查询返回包含收入和确切金额的准确月份。但我也需要在剩下的几个月里得到一个0。

这是怎么做到的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-19 15:36:21

经过多次测试,我找到了一个合适的解决方案。如果有人需要解释的话,我会把它发到这里。

代码语言:javascript
复制
SELECT meses.month, CAST(COUNT(stats.id)*ads.precio AS UNSIGNED) as precio
            FROM
            (
                      SELECT 1 AS MONTH
                       UNION SELECT 2 AS MONTH
                       UNION SELECT 3 AS MONTH
                       UNION SELECT 4 AS MONTH
                       UNION SELECT 5 AS MONTH
                       UNION SELECT 6 AS MONTH
                       UNION SELECT 7 AS MONTH
                       UNION SELECT 8 AS MONTH
                       UNION SELECT 9 AS MONTH
                       UNION SELECT 10 AS MONTH
                       UNION SELECT 11 AS MONTH
                       UNION SELECT 12 AS MONTH
            ) as meses
            LEFT JOIN wp_dgl_stats stats ON meses.month = MONTH(stats.datetime_stamp)
            LEFT JOIN wp_dgl_ads ads ON stats.id_ad = ads.id AND YEAR(stats.datetime_stamp) = '2015'
            GROUP BY meses.month

因为我是一名西班牙开发人员,我需要有西班牙语的月份名称,所以我选择了月份号,并且使用PHP数组,我们可以将月份号转换为他的西班牙语名称。

如果有人有什么问题,请回答,我很乐意回答。

票数 10
EN

Stack Overflow用户

发布于 2015-10-19 13:50:15

您可以在几个月内加入LEFT/RIGHT

代码语言:javascript
复制
WITH monthnames AS (SELECT <something that returns a list of the month names> as monthname)
SELECT COALESCE(COUNT(wp_dgl_stats.datetime_stamp)*wp_dgl_ads.price, 0) as incomes, MONTHNAME(wp_dgl_stats.datetime_stamp) as month
FROM wp_dgl_ads
INNER JOIN wp_dgl_stats ON wp_dgl_stats.id_ad = wp_dgl_ads.id
RIGHT JOIN monthnames ON month = monthname
WHERE YEAR(wp_dgl_stats.datetime_stamp) = 2015
GROUP BY MONTHNAME(wp_dgl_stats.datetime_stamp)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33213392

复制
相关文章

相似问题

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