gpt4 book ai didi

sql - Symfony/Doctrine : SUM and AVG score of players

转载 作者:行者123 更新时间:2023-12-04 16:39:49 26 4
gpt4 key购买 nike

我的数据库中有一个选项卡:PLAYERS和一个选项卡:SCORES。

在“得分”标签中,我有以下几行:ID-IDPLAYER-SCORE

例如:

ID   IDPLAYER   SCORE
---------------------
1 1 5
2 2 4
3 1 3
4 2 1
5 1 9

我想在模板中输入以下内容:

对于“ 玩家1 ”,存在 3 得分。

分数的 计数是“ 17 ”(9 + 3 + 5)。

玩家得分的 平均是“ 5.6 ”(17totscores/3countScores)。

我有一个与ORM相关的实体,没关系。

我有一个具有此功能的 Controller :
public function avgScoreAction($id) {

$queryScore = $this->getDoctrine()
->getRepository('AcmeBundle:tabScores');

$queryAvgScore = $queryScore->createQueryBuilder('g')
->select("avg(g.score)")
->where('g.idPlayer = :idPlayer')
->setParameter('idPlayer', $id)
->getQuery();

$avgScore = $queryAvgScore->getResult();

$result = ("Score average: ".$avgScore);

return new Response($result);

但是我有一个错误:
"Notice: Array to string conversion in this line:"

$result = ("Score average: ".$avgScore);

如果我这样写:
$response = new Response();
$response->setContent(json_encode(array($avgScore)));
$response->headers->set('Content-Type', 'application/json');

return $response;

我得到这个:
[[{"1":"5.6667"}]]

这是正确的平均值,但是什么是:[[{{1“:” and“}]]] ?????

最佳答案

what is: [[{"1":" and "}]]  ?
1是查询中 avg(g.score)的索引。为了更好地理解原因,请在 echo之前尝试使用 $queryAvgScore->getDql()getResult()

让我们回到一般的问题:

SQL是:
SELECT AVG(SCORE) as AVG, COUNT(SCORE) as COUNT, IDPLAYER as PLAYER FROM SCORES GROUP BY IDPLAYER

现在使用查询生成器:
$queryAvgScore = $queryScore->createQueryBuilder('g')
->select("avg(g.score) as score_avg, count(g.score) as score_count")
->where('g.idPlayer = :idPlayer')
->groupBy('g.idPlayer')
->setParameter('idPlayer', $id)
->getQuery();

注意,我已经添加了 aliases,这比使用索引更好。

希望能帮助到你。

关于sql - Symfony/Doctrine : SUM and AVG score of players,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com