2017-03-15 14 views
0

2つのテーブルがあり、1つにはチケットと他のルートが含まれています。私は2つの属性flight_DATEとroute_CODEを、最も多くのチケットを販売するために作りたいと思っています。チケットの販売数を格納する属性がないので、チケットの数がチケットの売り上げを表しているので、カウント(ticket_ID)のmax()を検索するクエリを実行する必要があります。私はそれが私のクエリですので、これを試してみるために実際のデータベースがありません:私はこれでも正しいSQLとそれほど自信がないですSQL:最も多くのID(売れたアイテム)のX、Y属性を取得

SELECT routes.ROUTE_CODE , tickets.FLIGHT_DATE 
    FROM routes JOIN tickets ON routes.ROUTE_CODE = tickets.ROUTE_CODE 
WHERE count(ticket.TICKET_ID) = (
      SELECT max(count(ticket.TICKET_ID) 
      ) 

を???前もって感謝します!

答えて

1

あなたの質問の背後にある考え方は正しいですが、レベルなしでmax計算を書いたので、すべてのチケットの売り上げが得られます。

あなたはまた、あなたのwhere句で集計列(あなたは、カウントを行ったように(ticket.TICKET_ID)の条件を置くことができない;条件のようなものがhaving句に行く

この1つはあなたが

必要なものを行う必要があります
SELECT ROUTE_CODE, FLIGHT_DATE 
JOIN tickets 
GROUP BY ROUTE_CODE , FLIGHT_DATE 
HAVING count(tickets.TICKET_ID) = (/*filter the row with count = max count */ 
      SELECT max(CNT) /* get the max of the counts */ 
      FROM (
        SELECT count(TICKET_ID) as CNT /* get the counts at desired levels */ 
        FROM tickets 
        GROUP BY FLIGHT_DATE, ROUTE_CODE 
       ) 
     ) 

に使用していただけの列(ROUTE_CODEが)あまりにもticketsテーブルの上に利用可能ですが、そのタブからより多くのデータを選択したい場合には有用である可能性があるので、私はroutesテーブルでjoinを削除それは間違いではありませんでした。

ところで、あなたは、テストのために利用可能なデータベースを持っていない場合、あなたはrextester

+0

おかげでたくさんの男のようなサイトでのクエリを試すことができます!!!! – Artemis

関連する問題