私は以下の声明を持っています。結果は戻ってきますが、レコードはソートされません。私は間違って何をしていますか?このステートメントの注文
SELECT *
FROM (
SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue
FROM table
WHERE id = 12
) AS TempTable
ORDER BY date DESC
私は以下の声明を持っています。結果は戻ってきますが、レコードはソートされません。私は間違って何をしていますか?このステートメントの注文
SELECT *
FROM (
SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue
FROM table
WHERE id = 12
) AS TempTable
ORDER BY date DESC
このクエリは、意図したとおりに動作しません。派生テーブル内のSUM
(これはAGGREGATE関数です)を使用すると、別の列GROUP BY
を開始しない限り、正確に1つの行を返します。
例では、id
でグループ化しても、1つのIDでグループ化するため、1行しか取得できません。 WHERE
ステートメントを変更して、より多くのIDを組み込み、それらを派生テーブル内にグループ化します。
また、様々な集計関数については、MySQL manualをご覧ください。
よろしく
EDIT
SELECT x.name, x.date, y.vol, y.val
FROM table AS x,
(SELECT MAX(date) AS date, SUM(volume) AS vol, SUM(value) AS val
FROM table
WHERE id = 12) AS y
WHERE x.id = 12,
AND x.date = y.date
は、私は、これはあなたが探しているものであると信じています:
SELECT *
FROM (
SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue
FROM table
WHERE id = 12
GROUP BY date
) AS TempTable
ORDER BY TempTable.date DESC
これはあなたの毎日のボリュームと値の合計を与える、その日によってあなたのための結果を注文。
'group by'を持たない以前のバージョンでは、多くの状況で日付の合計が正しく表示されません。
外側のselect文にORDER BY TempTable.date
を使用すると、日付順に表示する内容が内側のクエリの結果であることが明らかになります。
私は明確にすべき。私はちょうど人の最新の名前とすべてのボリュームの合計とすべての値の合計を持っている1行返されます。 –
私は1行戻ってほしい....最新の名前と値の合計とボリュームの合計 –