SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
何らかの理由で、合計と平均が実行されません。このステートメントをどのように機能させるのですか?SQL GROUP_CONCAT + SUM + AVG
SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
何らかの理由で、合計と平均が実行されません。このステートメントをどのように機能させるのですか?SQL GROUP_CONCAT + SUM + AVG
SQLがクエリをコンパイルする方法(私はあなたがGROUP_CONCATを使用しているのでMySQLを想定している)のため、order by句の前に別名の列名を参照することはできません。 SUMおよびAVG関数は手続き的ではありませんそれらは並行して行われます。つまり、彼らは従属することはできません。
第2に、GROUP_CONCATは数値ではなく文字列を返します。どのようにSUM/AVGに望みますか? SUMとAVGだけで評価欄を作成してください。この与えられた、あなたができる今
、:
SELECT
pid,
GROUP_CONCAT(rating) AS rating_total,
SUM(rating) as rating_sum,
AVG(rating) as rating_avg
FROM
rating
GROUP BY
pid
これは、あなたが探しているものをあなたを取得する必要があります。
GROUP_CONCATは、選択したすべてのvaluseを連結した文字列を返します。次に、あなたはその文字列を合計しようとしているし、合計の平均を取得しようとしています。
私はあなたが連結の結果ではなく、テーブルからの値にSUMとAVGを使用する必要があると思います。
downvotedがコメントを残して理由を説明できますか? – Eric
私のダウンボートはありませんでしたが、GROUP BYクエリの*かもしれません。 – Andomar
良いキャッチ。私は盲目的にそれを考えずにOPの行をコピーしました。変更されましたので、ヘッドアップに感謝します。 – Eric