2017-11-28 38 views
1
で合計価格フィールド
SELECT tb_publisher.book_name, AVG(tb_book.price) as average, MAX(tb_book.price), SUM(tb_book.price) 
FROM tb_book 
INNER JOIN tb_publisher 
on tb_book.id_publisher = tb_publisher.id_publisher 
WHERE 'average' < 70000 
GROUP BY tb_publisher.publisher_name 

私は平均フィールドが70000よりも小さいデータを表示したい(つまり、その番号の下にのみ1録音することになって)、私は理解できませんすべてのデータを表示するのではなく、表示したくない理由私は知っていることをすべて試したので、助けに感謝するでしょう。注意していただきありがとうございます。あなたのクエリにショー平均価格、高価格、およびエイリアス

+2

使用している適切なDBにタグを付けてください。私は集計結果を 'where'で使うことはできないと思います。あなたの ''平均 ''を文字列として見ているので、 ''どこで ''が最初に評価されると思います。 – chris85

+0

ええ、私はそれをしてはいけないと思いますが、 ''を入れなかった場合、SQLはデータを表示するのではなくエラーになります。とにかく、ありがとう、助けてくれてありがとう。^u ^。 – Ervan

答えて

2

あなたがやっている、: WHERE 'average' < 70000を、これはあなたが、もちろん、あなたがやりたいことではありませんinteger 700000string 'average'を比較していることを意味します。

集約された列をフィルタリングしようとしています。それはHAVING clauseの正確な定義です。他のノートに

SELECT tb_publisher.book_name, AVG(tb_book.price) as average, MAX(tb_book.price), SUM(tb_book.price) 
FROM tb_book 
INNER JOIN tb_publisher 
    ON tb_book.id_publisher = tb_publisher.id_publisher 
GROUP BY tb_publisher.publisher_name 
HAVING AVG(tb_book.price) < 70000 

は、あなたがGROUP BYに名前の代わりに主キーが必要になる場合があります。

+1

うわー、助けてくれてありがとう^ _ ^、私は大学では、それを検索する際に最善を尽くしていないと思ったことはありませんでした。ご迷惑をおかけして申し訳ありません。 – Ervan

+0

@Ervan実際に回答を回答としてマークすることを忘れないでください。 –

0

それは次のようになりますので、ほとんどのデータベースは、あなたがhaving句の表の別名を参照してみましょう:

SELECT p.publisher_name, AVG(b.price) as average, MAX(b.price), SUM(b.price) 
FROM tb_book b INNER JOIN 
    tb_publisher p 
    ON b.id_publisher = p.id_publisher 
GROUP BY p.publisher_name 
HAVING average < 70000 ; 

注:

  • SELECTで凝集していない列はの列と一致する必要がありますGROUP BY。あなたが本や出版社で情報を知りたいのかどうか分かりませんが、私は出版社が推測しています。
  • テーブルエイリアスの使用。これにより、クエリの書き込みと読み込みが容易になります。
  • データベースによっては整数演算を行うものがあります。 priceが整数で小数点が必要な場合は、AVG(b.price * 1.0)などが必要です。
  • すべてのデータベースがHAVING句のテーブルエイリアスの使用をサポートしているわけではありません。
  • 2人の異なるサイト運営者が同じ名前を持つ可能性があるため、実際には慎重にしたい場合はp.id_publisherで集計します。
+0

うわー、それはクールです。申し訳ありませんが、私がここに投稿した実際のテーブルではなく、単なるサンプルです。私が求めていた質問を読者が理解しやすくなりました。そして、答えにも非常に感謝します、あなたのスクリプトは覚えやすいです。そして、大変申し訳ありませんが、神は祝福します。^_ ^ – Ervan