分组/对具有相同列值的值求和

阿德里安斯德克

我正在尝试解决一个看起来像下面的代码的问题,但是由于缺乏知识并通读sqlalchemy文档,因此我还没有真正找到解决该问题的方法。

目标:如果year_column中的年份相同,则获取sales_in_usd的总和

到目前为止,我得到的是通过调试并通过使用以下查询通过Google Stackoverflow和文档阅读一些内容:

session.query(fact_corporate_sales, Company, Sales,
                                                    Time, Sector, func.sum(Sales.sales_in_usd).label('summary')).\
                                join(Sales).\
                                join(Time).\
                                join(Company).\
                                join(Segment).\
                                order_by(Time.year.desc()).\
                        filter(Company.company_name.like(filtered)).\
                                group_by(fact_corporate_sales.fact_cps_id, Company.company_name,fact_corporate_sales.cps_id).\
                                all()

而且fact_cps_id在fact_table中是唯一的,并且同一表存储区以及维表的键也是如此。

我有一个事实表,其中存储了4个维表中的4个外键。

fact_cps_id   company_id   sales_id   time_id  sector_id
   1             4            2          1        2                      
   2             4            1          1        3                          
   3             4            3          2        1          
   4             4            2          2        4                 
   5             4            4          3        2            
   6             4            99         1        1 

dim_company

company_id  company_name
    1          Nike
    2          Adidas
    3          Puma
    4          Reebok

sun_segment

segment_id  segment_nom
    1         basketball
    2         running
    3         soccer
    4         watersports

昏暗的时间

time_id  quarter year
  1         1     2013
  2         2     2013
  3         1     2014
  4         3     2014

dim_sales

sales_id    sales_in_euro
   1           2000
   2           3200
   3           1400
   4           1590
   ..          .. 
   99          1931

因此,基本上,如您在表中所看到的并查询的,我试图做的是汇总例如同一年的dim_Time.year <-的所有销售额。

如果我们查看fact_table,我们可以看到,这里的time_id = 1是3次。因此,可以将这些值进行汇总并显示为摘要。

我从标准SQL知道,可以通过使用group by和聚合函数sum来实现。

我的结果(time_id仅用于帮助,因此没有输出):

13132.0 <- time_id = 1
21201.0 <- time_id = 2 
23923.0 <- time_id = 1
31232.0 <- time_id = 99
32021.0 <- time_id = 2
32342.0 <- time_id = 1 
131231.0 <- time_id = 4

我将实际的查询打印到控制台中,并获得了此结果[必须删除.all(),因为'list'没有称为'statement'的属性]:

SELECT fact_corporate_sales.cps_fact_id, fact_corporate_sales.cps_id, 

fact_corporate_sales.company_id, fact_corporate_sales.time_id,  fact_corporate_sales.segment_id, sum(dim_corporate_sales.sales_in_usd) AS summary
FROM fact_corporate_sales INNER JOIN dim_corporate_sales ON dim_corporate_sales.cps_id = fact_corporate_sales.cps_id INNER JOIN dim_time ON dim_time.time_id = fact_corporate_sales.time_id INNER JOIN dim_company ON dim_company.company_id = fact_corporate_sales.company_id INNER JOIN dim_segment ON dim_segment.segment_id = fact_corporate_sales.segment_id
WHERE dim_company.company_name LIKE %s GROUP BY fact_corporate_sales.cps_fact_id ORDER BY dim_time.year DESC

如果我想按例如dim_time.Year分组,那么我会从mysql或控制台获得以下响应

Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.fact_corporate_sales.fact_cps_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
阿德里安斯德克

解决方案是仅执行以下sql:

engine.execute("SET sql_mode='';")

由于我失败的查询的响应是:

"this is incompatible with sql_mode=only_full_group_by"

我不得不禁用sql_mode,所以我也得到了结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL中具有相同列值的多行值求和

来自分类Dev

如何对特定列中具有相同值的行求和

来自分类Dev

在R中将具有相同缺失值模式的列分组

来自分类Dev

在多列上对具有相同列值的行进行分组

来自分类Dev

合并多维数组,并对在另一列中具有相同值的列值求和

来自分类Dev

合并多维数组,并对在另一列中具有相同值的列值求和

来自分类Dev

选择分组依据并对具有相同数量的列求和

来自分类Dev

按行分组的值按具有相同名称的列分组

来自分类Dev

将第1列具有相同值的csv文件的第2列求和

来自分类Dev

将某列中具有相同值的excel中的所有行求和

来自分类Dev

如何在具有R的列中将相同值的行值分组?

来自分类Dev

如何在具有R的列中将相同值的行值分组?

来自分类Dev

将X列中具有相同值但Y列中具有不同值的行进行分组(无重复)

来自分类Dev

如何在A列中求和一些具有相同值的数字?

来自分类Dev

MySQL_如何对在另一列上具有相同值的每两列中的值求和?

来自分类Dev

在Excel中对具有相同文本值的行求和

来自分类Dev

熊猫对具有几乎相同值的行求和

来自分类Dev

计算列的总和并按具有相同值的列对其进行分组

来自分类Dev

将具有相同属性的连续事件分组,并计算其他列的累计值

来自分类Dev

熊猫-分组和汇总列中具有相同值的连续行

来自分类Dev

熊猫在不同的列中将具有相同值的不同行分组

来自分类Dev

将具有相同属性的连续事件分组,并计算其他列的累计值

来自分类Dev

如何对“ NAME”列中具有相同值的记录进行分组?

来自分类Dev

使用LINQ将具有相同值的行分组为列

来自分类Dev

SQL 显示具有相同一列值的行分组的行

来自分类Dev

SQL 计算列中具有相同值的行并按 id 分组?

来自分类Dev

如果不同行中的两列具有相同的值,则分组?

来自分类Dev

MATLAB。当第二列的行具有相同的值时,如何对第一列的所有行求和?

来自分类Dev

多个列具有相同的枚举值

Related 相关文章

  1. 1

    MySQL中具有相同列值的多行值求和

  2. 2

    如何对特定列中具有相同值的行求和

  3. 3

    在R中将具有相同缺失值模式的列分组

  4. 4

    在多列上对具有相同列值的行进行分组

  5. 5

    合并多维数组,并对在另一列中具有相同值的列值求和

  6. 6

    合并多维数组,并对在另一列中具有相同值的列值求和

  7. 7

    选择分组依据并对具有相同数量的列求和

  8. 8

    按行分组的值按具有相同名称的列分组

  9. 9

    将第1列具有相同值的csv文件的第2列求和

  10. 10

    将某列中具有相同值的excel中的所有行求和

  11. 11

    如何在具有R的列中将相同值的行值分组?

  12. 12

    如何在具有R的列中将相同值的行值分组?

  13. 13

    将X列中具有相同值但Y列中具有不同值的行进行分组(无重复)

  14. 14

    如何在A列中求和一些具有相同值的数字?

  15. 15

    MySQL_如何对在另一列上具有相同值的每两列中的值求和?

  16. 16

    在Excel中对具有相同文本值的行求和

  17. 17

    熊猫对具有几乎相同值的行求和

  18. 18

    计算列的总和并按具有相同值的列对其进行分组

  19. 19

    将具有相同属性的连续事件分组,并计算其他列的累计值

  20. 20

    熊猫-分组和汇总列中具有相同值的连续行

  21. 21

    熊猫在不同的列中将具有相同值的不同行分组

  22. 22

    将具有相同属性的连续事件分组,并计算其他列的累计值

  23. 23

    如何对“ NAME”列中具有相同值的记录进行分组?

  24. 24

    使用LINQ将具有相同值的行分组为列

  25. 25

    SQL 显示具有相同一列值的行分组的行

  26. 26

    SQL 计算列中具有相同值的行并按 id 分组?

  27. 27

    如果不同行中的两列具有相同的值,则分组?

  28. 28

    MATLAB。当第二列的行具有相同的值时,如何对第一列的所有行求和?

  29. 29

    多个列具有相同的枚举值

热门标签

归档