6

私はこのクエリを持っています:

    SELECT DATE( a.created_at ) AS order_date, count( * ) as cnt_order
    FROM `sales_order_item` AS a
    WHERE MONTH( a.created_at ) = MONTH( now())-1
    GROUP BY order_date

これは次のような結果を返します(スナップショットはそれ以外の場合のみ31日ごとに返されます):

order_date  cnt_order 
2012-08-29  580
2012-08-30  839
2012-08-31  1075

そして私の完全なクエリは上記の選択に基づいて選択しています:

SELECT order_date
    , MAX(cnt_order) AS highest_order
FROM (
        SELECT DATE (a.created_at) AS order_date
            , count(*) AS cnt_order
        FROM `sales_order_item` AS a
        WHERE MONTH(a.created_at) = MONTH(now()) - 1
        GROUP BY order_date
    ) AS tmax

しかし、それは結果です:

order_date  highest_order
2012-08-01  1075

これは日付が間違っており、常に2012-08-31と想定される日付の最初の行を選択します。多分これは私が知らない単純なエラーです。では、2012-08-31の正しい日付を取得するにはどうすればよいですか?どんな助けでも素晴らしいでしょう。

4

2 に答える 2

1

サブクエリの結果セットの順序を試すことができます。何かのようなもの:

SELECT
    DATE (a.created_at) AS order_date,
    COUNT(*) AS cnt_order
FROM
    `sales_order_item` AS a
WHERE
    MONTH(a.created_at) = MONTH(now()) - 1
GROUP BY
    order_date
ORDER BY
    cnt_order DESC
于 2012-09-20T06:09:24.363 に答える
0

ORDER BY order_date DESCサブクエリに追加できます。

于 2012-09-20T06:10:00.597 に答える