【问题标题】:Grouped aggregations with Yii STAT?使用 Yii STAT 进行分组聚合?
【发布时间】:2012-07-08 20:17:53
【问题描述】:

我有一个 Yii STAT Relation,它被定义为提供一个分组的 SUM 结果,但是当我在我的视图中访问关系时唯一的值是最新的单个值,而不是每个值

例如,这是我的关系:

'total_salaries_by_job' => array(
    self::STAT, 
    'Employee', 
    'department_id', 
    'select' => 'job_type_id, SUM(salary)', 
    'group'=>"job_type_id"
) 

这会生成以下 SQL:

SELECT
  department_id AS c
, job_type_id
, SUM(salary) AS s 
FROM Employee AS t
WHERE t.department_id = 1 
GROUP BY 
  department_id
, job_type_id 

手动运行,结果集是:

c     | job_type_id    | s
------+----------------+---------
1     | 1              | 233000
------+----------------+---------
1     | 2              | 25000
------+----------------+---------
1     | 3              | 179000

但是,在我看来,如果我执行以下操作:

<pre>
<?php print_r($department->total_salaries_by_job); ?>
</pre>

结果很简单:179000,而我原以为它是一个包含 3 个元素的数组。

以 STAT 关系的工作方式只返回 1 个值,还是我需要做其他事情?
有可能做我正在尝试的事情吗?

【问题讨论】:

    标签: sql activerecord yii aggregate-functions


    【解决方案1】:

    你可以做你想做的事,但你不能使用 STAT 关系来做。而是使用 Normal HAS_MANY 关系并使用相同的 select 语句。

    【讨论】:

    • 为了让它工作,我必须给SUM(amount)一个别名,然后在Employee模型中用别名创建一个公共变量。
    猜你喜欢
    • 2019-10-12
    • 1970-01-01
    • 2012-11-04
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多