次のクエリを使用して、合計注文数と注文の合計を日ごとにグループ化する必要があります。タイムスタンプを使用してすべてを保存しています。
SELECT
COUNT(id) as order_count,
SUM(price + shipping_price) as order_sum,
DAY(FROM_UNIXTIME(created)) as day
FROM `order`
WHERE '.implode(' AND ', $where).'
私はDAYでグループ化する必要がありますが、この週末の販売を行うと、order_countが3ではなく1になります。上記の値を日ごとにグループ化するにはどうすればよいですか?
注:内破は期間を定義するためにのみ使用されます(作成された場所> = TIMESTAMP AND <= TIMESTAMP)
更新
GROUP BYなしday
Array (
[order_count] => 3
[order_sum] => 69.70
[day] => 17
)
GROUP BY day
Array (
[order_count] => 1
[order_sum] => 24.90
[day] => 17
)
このクエリは、売り上げがあった毎日、注文数、およびそれらの売り上げの合計を返すために必要です。どこかでパズルのピースが欠けています...
最後にGROUP BY ...
を追加するのを忘れていますか?
SELECT
COUNT(id) as order_count,
SUM(price + shipping_price) as order_sum,
DAY(FROM_UNIXTIME(created)) as order_day
FROM `order`
WHERE '.implode(' AND ', $where).'
GROUP BY order_day
day
はMySQL関数であるため、as day
を日付列に使用することはできません。 order_day
などを使用します。
@OMG Unicornのコメントに従って、以下を使用できます。
DAY(FROM_UNIXTIME(created)) as `day`
day
を`バッククォートでラップする限り。
次のように使用することもできます。
SELECT
COUNT( id ) AS order_count,
SUM( price + shipping_price ) AS order_sum
FROM `order`
GROUP BY LEFT( timestamp, 10 )
あるいは
GROUP BY SUBSTR(timestamp、1、10)
DAY()
(MySQLの関数)とday
(変数名)の間で名前の競合が発生している可能性があります。 order_day
など、競合しないものを使用してみましたか?