2016-09-03 8 views
0

私はMysqlを初めて使用しています。私は両方の合計(Max(列))を使用したかったのですか?サブクエリなしで同じ列にMaxとSumを使用する-Mysql

なぜ私はその不可能なことを知りませんか? (個別(列))を数えるのに対し

2の集計関数を使用して、すなわち可能です一緒に

+2

何か試しましたか?コード –

+0

@ZaidMirza ya私は試してみましたが、それは基本的なクエリでも機能しませんでした。ソリューションはサブクエリのみです – Ramgopal

+0

別名は関数(集計またはその他)ではありません – Strawberry

答えて

1

理由はSUM(ある)とMAXは()の両方の集約関数として結果を返すこれらの関数であり、テーブルの入力をグループ化します。 1つの集約関数を別の集計関数に適用すると、別のグループ化関数の結果セットを介してデータをグループ化するようなものであり、SQLでは許可されません。

しかし、SQL Serverでは、2008年以降、新しい句OVER()が導入され、その特定の列に対してその句でグループ化条件を指定できるようになりました。

グループ化を必要としないDISTINCTの場合、集合関数を適用する別のレコードセットをプルします。それはうまくいくでしょう。

0

あなたは次のように実行することはできますが、その後の列をグループ化orther使用していない場合、それは常にSUMので、1列を返す(MAX (TOT))= MAX(TOT)私たちは同じ場所でそれを行うことができていないにもかかわらず:

SELECT SUM(total) tot FROM (
SELECT 
    MAX(quantity) total 
    FROM deliveries) t; 
+0

@S Boharaしかし、 – Ramgopal

0

DISTINCTが集計関数ではありません。基本的なコマンドであるキーワードです。

あなたの場合、グループからMAXを取得すると、単一の値が得られます。 SUM単一の値は意味をなさない。

あなたはすべての既存のグループからそうSUMMAX値をしたい場合、あなたはこのように試みることができる:

SELECT SUM(<column>) 
FROM <table> t 
WHERE NOT EXISTS 
    (
    -- filter all max values from each group 
    SELECT 1 
    FROM <table> d 
    WHERE 1=1 
     AND d.<group_column1> = t.<group_column1> 
     AND d.<group_column2> = t.<group_column2> 
     ... 
     AND d.<column> > t.<column> 
) 
+0

私はMaxを使ってより多くの値を得ることができますし、関数ごとにグループを選択してください。column2によってテーブルグループからmax(column_name)を選択してください//各グループについて最大を見つけて – Ramgopal

+0

を与えます。 – Ramgopal

関連する問題