2016-05-11 11 views
0

私はこのクエリを持っています:2010-2014年の間に製品 'beta600'のための最大の平均額を持つ支店とbrancheの都市を検索します。
私はこのコードを実行しますが、結果は得られません。実行に約10分かかり、nullになります。助けてもらえますか?avgのmaxについてのクエリ

SELECT DISTINCT branch_code,branch_city, AVG(trn_amount)) AS max_avg 
FROM branches,transactions,products,accounts 
WHERE branches.branch_code = accounts.branch_code AND 
products.product_code = accounts.product_code AND 
accounts.account_id = transactions.account_id AND 
product_name = 'Beta600' AND 
trn_date > '31/12/2009' AND trn_date < '1/1/2015' 
GROUP BY branch_code,branch_city 
ORDER BY max_avg 
LIMIT 1; 
+0

構文エラー: 'AVG()'の余分な ')' in – coatless

答えて

0

あなたのアプローチは妥当と思われますが、クエリではいくつかの作業を使用できます。以下は推奨事項です:

  • 明示的にJOIN構文を使用してください。単純なルール:は、FROM句にカンマを使用します。 *常にuse explicit JOIN`の構文。
  • テーブルのエイリアスを使用します。彼らは、クエリをより簡単に書いて読めるようにします。
  • 標準の日付形式 - YYYY-MM-DDを使用します。

結果のクエリ:クエリは何も結果が返されていない場合

SELECT b.branch_code, b.branch_city, AVG(t.trn_amount)) AS max_avg 
FROM branches b JOIN 
    accounts a 
    ON b.branch_code = a.branch_code JOIN 
    transactions t 
    ON a.account_id = t.account_id JOIN 
    products p 
    ON p.product_code = a.product_code 
WHERE p.product_name = 'beta600' AND 
     t.trn_date > '2009-12-31' AND t.trn_date < '2015-01-01' 
GROUP BY branch_code, branch_city 
ORDER BY max_avg 
LIMIT 1; 

、そしてWHERE句はすべてをフィルタリングしています。おそらく、製品名の日付形式または大文字小文字が問題の原因です。

関連する問題