2017-04-14 20 views
0

ほとんどの注文が発生している曜日を問い合せようとしています。私は結果を返すクエリを書いた。しかし、その結果はおそらく大部分の注文に基づいていると思われますが、すべての注文の日であるため、数十もあります。私は一日だけ返す方法が不思議です。SQL - 最も一般的な曜日のクエリ

表は以下のとおりです。

Orders 
OrderID 
OrderDate 

SELECT MAX(DAYNAME(OrderDate)) as WeekDay 
FROM Orders O 
GROUP BY OrderDate 
OrDER BY WeekDay DESC; 
+0

あなたはどのデータベースシステムを使用していますか?答えはそれに非常に依存しています。 – SandPiper

答えて

2

あなたが書くしようとしているクエリは次のとおりです。

SELECT TOP (1) DAYNAME(OrderDate) as WeekDay, COUNT(*) 
FROM Orders O 
GROUP BY DAYNAME(OrderDate) 
OrDER BY COUNT(*) DESC; 

このクエリは、あなたの質問に答えるように見えますが、あなたは非常に注意する必要があります。結局、Ordersに1日分のデータしかない場合は、その曜日が優先されます。私の提案は、この情報を得るために、指定された週数から、好ましくは休日なしでデータを取ることです。

あなたの質問はデータベースを指定していません(私は推測できるかもしれませんが)。これに関する特定の日時ロジックは、データベースによって異なります。

+0

コメントをいただきありがとうございますが、これを実行するのに問題があります。その時点で「WITH」は有効ではないと言います。私は 'WITH'を使用していないし、その構文には慣れていない。それが何をしているのかを明確にすることができますか? – Babeeshka

+0

私は関数にコメントできませんでしたが、私はあなたのアイデアを使用して、別のアプローチを試してみました: '「WEEKDAY、COUNT(*)としてMAX(DAYNAME(受注日))を選択 受注O GROUP BY DAYNAME(受注日) FROM ORDER BY WeekDay DESC; WEEKDAY、COUNT(*) として SELECT MAX(DAYNAME(受注日))COUNT BY受注 GROUP BY DAYNAME(受注日) ORDER(*)DESC LIMIT 1 FROM; ' これは、曜日を返しました火曜日と木曜日の両方が同じ量を持っていましたが、カウントと2番目のクエリは大部分の注文でトップに戻りました。 (ここでコードを書式化するのは申し訳ありません) – Babeeshka

+0

'WITH TIES'はそれほど重要ではありません。それは、関係がある場合は、最も高いすべての週の日を返します。 –

関連する問題