Mysql SQL报表,包括销售代表、销售代表和#x27;s状态,以及该销售代表的总销售额';s状态由YYY-MM排序

Mysql SQL报表,包括销售代表、销售代表和#x27;s状态,以及该销售代表的总销售额';s状态由YYY-MM排序,mysql,sql,mariadb,Mysql,Sql,Mariadb,情况。我正在尝试制作一份报告,列出销售代表姓名(共50名)、销售代表的状态以及该状态下按YYYY-MM细分的总销售额。如果该州有两名或两名以上的销售代表,则应列出他们各自所在州的相同信息。只要包含所有信息,最终列表的排序方式并不重要 问题。除了我的总数之外,我还需要各州的总数 这是我的密码: SELECT dim_sales_rep.sales_rep_name as 'Sales Rep', dim_state.abbreviation as 'State', dat

情况。我正在尝试制作一份报告,列出销售代表姓名(共50名)、销售代表的状态以及该状态下按YYYY-MM细分的总销售额。如果该州有两名或两名以上的销售代表,则应列出他们各自所在州的相同信息。只要包含所有信息,最终列表的排序方式并不重要

问题。除了我的总数之外,我还需要各州的总数

这是我的密码:

 SELECT
    dim_sales_rep.sales_rep_name as 'Sales Rep',
    dim_state.abbreviation as 'State',
    date_format(dim_date.date, '%Y-%m') as 'Year-Month',
    concat('$',sum(fact_sales.total_sales)) as 'Sales'
FROM
    (
        (
            dim_sales_rep
        JOIN dim_state ON dim_sales_rep.state_key = dim_state.state_key
        )
    JOIN fact_sales ON dim_sales_rep.sales_rep_key = fact_sales.sales_rep_key
    )
JOIN dim_date ON fact_sales.date_key = dim_date.date_key
GROUP BY dim_date.year, dim_date.month, dim_state.abbreviation, dim_sales_rep.sales_rep_name
样本输出:

Rep             State       Year-Month      Sales
Michele Harris   GA          2010-08         $679.79
T.S. Eliot       GA          2010-07         $2938.74
应该是这样的:

Rep             State       Year-Month      Sales
Michele Harris   GA          2010-08         $679.79
Georgiana Woe    GA          2010-08         $482.98
State total                                  $1162.77
Rep             State      Year-Month      YM Total      State Total
Michaele Harris GA         2010-08         $679.79       $1162.77
Georgiana Woe   GA         2010-08         $482.98       $1162.77
或者像这样:

Rep             State       Year-Month      Sales
Michele Harris   GA          2010-08         $679.79
Georgiana Woe    GA          2010-08         $482.98
State total                                  $1162.77
Rep             State      Year-Month      YM Total      State Total
Michaele Harris GA         2010-08         $679.79       $1162.77
Georgiana Woe   GA         2010-08         $482.98       $1162.77
以下是数据结构:

表格事实\u销售额

日期密钥(PK)代理密钥

帐户密钥(PK)代理密钥

销售代表密钥(PK)代理密钥

总销售额总销售额美元

产品数量已售出的产品数量

表格尺寸状态

状态密钥(PK)代理密钥

缩写词,如AL或CA

名称,例如加利福尼亚州

表格dim\U账户

帐户密钥(PK)代理密钥

帐户名

帐户地址

状态密钥代理密钥

生效日期此记录处于活动状态的开始日期

过期日期此记录处于活动状态的结束日期

is_current表示活动记录

表格尺寸销售代表

销售代表密钥(PK)代理密钥

销售代表姓名

状态密钥代理密钥

生效日期此记录处于活动状态的开始日期

过期日期此记录处于活动状态的结束日期

is_current表示活动记录

表格尺寸日期

日期\密钥(PK)替代密钥日期,如2011-01-01

月份,例如01

年份,如2011年

注:

PK:表示该列是表的主键或主键的一部分

代理项键表示为数字,不表示应用程序中的实际值。例如,date_key可以是1、2、3、4等,而不是实际日期

假设dim_date包含所有时间的所有日期


假设列在不同的表中具有相同的名称,则它们是等效的。

仅按状态分组时,结果集中每个状态有一行。这就是
groupby
的意思:根据所提到的列值聚合数据

使用以下命令:

GROUP BY dim_date.year, dim_date.month, dim_state.abbreviation, dim_sales_rep.sales_rep_name WITH ROLLUP
而且,使用MySQL的日期函数可以很好地格式化日期

试试这个:

SELECT DATE_FORMAT(STR_TO_DATE(CONCAT_WS('-',2014,3,1),'%Y-%m-%e'),'%Y-%m')

大大简化了这个问题,您可以看到,您正在使用MySQL的非标准扩展来对
分组方式进行扩展。请阅读。你的查询可能会产生不可预测的结果。我不明白你所说的3列代理PK是什么意思。请提供
SHOW CREATE TABLE
。请勿在维度表中输入日期;在主表中保留它的完整性(
DATE
datatype)。我收到的是数据结构,但恐怕不是数据。通过“代理”,我相信这是一个外键。谢谢。我在我的日期字段(dim_DATE.DATE)上使用了DATE_格式,并且能够获得我想要的该列的输出。请看编辑后的文章。分组方式非常接近!它给出了每个州每个销售人员的总销售额。现在再按州列出总数,这将是完美的。谢谢