私はMysqlを初めて使用しています。私は両方の合計(Max(列))を使用したかったのですか?サブクエリなしで同じ列にMaxとSumを使用する-Mysql
なぜ私はその不可能なことを知りませんか? (個別(列))を数えるのに対し
が2の集計関数を使用して、すなわち可能です一緒に
私はMysqlを初めて使用しています。私は両方の合計(Max(列))を使用したかったのですか?サブクエリなしで同じ列にMaxとSumを使用する-Mysql
なぜ私はその不可能なことを知りませんか? (個別(列))を数えるのに対し
が2の集計関数を使用して、すなわち可能です一緒に
理由はSUM(ある)とMAXは()の両方の集約関数として結果を返すこれらの関数であり、テーブルの入力をグループ化します。 1つの集約関数を別の集計関数に適用すると、別のグループ化関数の結果セットを介してデータをグループ化するようなものであり、SQLでは許可されません。
しかし、SQL Serverでは、2008年以降、新しい句OVER()が導入され、その特定の列に対してその句でグループ化条件を指定できるようになりました。
グループ化を必要としないDISTINCTの場合、集合関数を適用する別のレコードセットをプルします。それはうまくいくでしょう。
あなたは次のように実行することはできますが、その後の列をグループ化orther使用していない場合、それは常にSUMので、1列を返す(MAX (TOT))= MAX(TOT)私たちは同じ場所でそれを行うことができていないにもかかわらず:
SELECT SUM(total) tot FROM (
SELECT
MAX(quantity) total
FROM deliveries) t;
@S Boharaしかし、 – Ramgopal
DISTINCT
が集計関数ではありません。基本的なコマンドであるキーワードです。
あなたの場合、グループからMAX
を取得すると、単一の値が得られます。 SUM
単一の値は意味をなさない。
あなたはすべての既存のグループからそうSUM
MAX
値をしたい場合、あなたはこのように試みることができる:
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>
)
何か試しましたか?コード –
@ZaidMirza ya私は試してみましたが、それは基本的なクエリでも機能しませんでした。ソリューションはサブクエリのみです – Ramgopal
別名は関数(集計またはその他)ではありません – Strawberry