5

SUM ステートメントを使用して動的に生成される列の MAX を取得しようとしています。SUM ステートメントは、'GROUP by' 構文と一緒に使用されます。

これは元のクエリですが、グループ化、合計、そしてもちろん MAX で動作するように変更する必要があります。

SELECT  SUM(video_plays) AS total_video_plays
    FROM `video_statistics` v_stat
    GROUP BY v_stat.`video_id` ASC

ご覧のとおり、SUM は video_plays 内のすべての値をtotal_video_playsとして追加しています。

しかし、私は単純にtotal_video_playsのMAXを取得したい

私の試みは以下のとおりですが、うまくいきません..

SELECT SUM(video_plays) AS MAX(total_video_plays)
    FROM `video_statistics` v_stat
    GROUP BY v_stat.`video_id` ASC

サブクエリを使用せずに動的に作成された列の MAX を取得するにはどうすればよいでしょうか- 上記は既に 1 つの中に配置されているためです。

4

5 に答える 5

12

何かのようなもの

SELECT SUM(video_plays) AS total_video_plays
FROM `video_statistics` v_stat
GROUP BY v_stat.`video_id` 
ORDER BY total_video_plays DESC 
LIMIT 1 

適切な MySQL ダイアレクトのための Hat Tip OMG Ponies。

于 2009-11-19T20:39:35.370 に答える
3

これはうまくいきますか?

SELECT MAX(total_video_plays) from table (
 SELECT SUM(video_plays) AS total_video_plays
    FROM `video_statistics` v_stat
    GROUP BY v_stat.`video_id` ASC )

サブクエリが含まれていますが、あなたが考えていた意味ではないかもしれません。

于 2009-11-19T20:39:57.883 に答える
3

2 つの集計関数を重ねて実行することはできないため、サブクエリなしでは求めていることを実行できません。

于 2009-11-19T20:36:14.737 に答える
0

あなたはこれを行うことはできませんか?:

SELECT video_id, max(video_plays) AS max_video_plays    
FROM `video_statistics` v_stat    
GROUP BY v_stat.`video_id` ASC

ここに例があります:

http://dev.mysql.com/doc/refman/5.1/de/select.html

SELECT user, MAX(salary) FROM users
GROUP BY user HAVING MAX(salary) > 10;

EDIT :サブクエリを使用していますが、2回目の試行:

select max(sum_video_plays)
from (
SELECT video_id, sum(video_plays) AS sum_video_plays    
FROM `video_statistics` v_stat    
GROUP BY v_stat.`video_id`
) x

外側のクエリは、はるかに小さなセットから選択している可能性があり、(データの分布などによっては) 非常にパフォーマンスが高い場合があります。

于 2009-11-19T20:35:05.487 に答える