Bagikan melalui


Bekerja dengan kolom dalam kueri agregat (Alat Visual Database)

Berlaku untuk:SQL Server

Saat Anda membuat kueri agregat , Alat Perancang Kueri dan Tampilan (Alat Database Visual) membuat asumsi tertentu sehingga dapat membuat kueri yang valid. Misalnya, jika Anda membuat kueri agregat dan menandai kolom data untuk output, Kueri dan Perancang Tampilan secara otomatis membuat bagian kolom dari GROUP BY klausa sehingga Anda tidak secara tidak sengaja mencoba menampilkan konten baris individual dalam ringkasan.

Gunakan Group By

Kueri dan Desainer Tampilan menggunakan panduan berikut untuk bekerja dengan kolom:

  • Saat Anda memilih opsi Kelompokkan Menurut atau menambahkan fungsi agregat ke kueri, semua kolom yang ditandai untuk output atau digunakan untuk pengurutan secara otomatis ditambahkan ke GROUP BY klausa. Kolom tidak secara otomatis ditambahkan ke GROUP BY klausul jika sudah menjadi bagian dari fungsi agregat.

    Jika Anda tidak ingin kolom tertentu menjadi bagian GROUP BY dari klausa, Anda harus mengubahnya secara manual dengan memilih opsi lain di kolom Kelompokkan Menurut dari panel Kriteria. Namun, Kueri dan Desainer Tampilan tidak mencegah Anda memilih opsi yang bisa menghasilkan kueri yang tidak berjalan.

  • Jika Anda menambahkan kolom output kueri secara manual ke fungsi agregat di panel Kriteria atau SQL, Kueri dan Desainer Tampilan tidak secara otomatis menghapus kolom output lain dari kueri. Oleh karena itu, Anda harus menghapus kolom yang tersisa dari output kueri atau menjadikannya bagian GROUP BY dari klausa atau fungsi agregat.

Saat Anda memasukkan kondisi pencarian ke kolom Filter panel Kriteria, Kueri dan Perancang Tampilan mengikuti aturan berikut:

  • Jika kolom Kelompokkan Menurut pada kisi tidak ditampilkan (karena Anda belum menentukan kueri agregat), kondisi pencarian ditempatkan ke dalam klausa WHERE.

  • Jika Anda sudah berada dalam kueri agregat dan telah memilih opsi Where di kolom Group By, kondisi pencarian ditempatkan dalam WHERE klausa.

  • Jika kolom Kelompokkan Menurut berisi nilai apa pun selain Di mana, kondisi pencarian ditempatkan dalam HAVING klausa.

Menggunakan klausa HAVING dan WHERE

Prinsip berikut menjelaskan cara mereferensikan kolom dalam kueri agregat dalam kondisi pencarian. Secara umum, Anda dapat menggunakan kolom dalam kondisi pencarian untuk memfilter baris yang harus diringkas ( WHERE klausa) atau untuk menentukan hasil yang dikelompokkan mana yang muncul dalam output akhir ( HAVING klausa).

  • Kolom data individual dapat muncul dalam WHERE klausa atau HAVING , tergantung pada bagaimana kolom tersebut digunakan di tempat lain dalam kueri.

  • WHERE klausa digunakan untuk memilih subset baris untuk meringkas dan mengelompokkan dan dengan demikian diterapkan sebelum pengelompokan apa pun selesai. Oleh karena itu, Anda dapat menggunakan kolom data dalam WHERE klausul meskipun bukan bagian GROUP BY dari klausa atau terkandung dalam fungsi agregat. Misalnya, pernyataan berikut memilih semua judul yang harganya lebih dari $10,00 dan menghitung rata-rata harga tersebut.

    SELECT AVG(price)
    FROM titles
    WHERE price > 10;
    
  • Jika Anda membuat kondisi pencarian yang melibatkan kolom yang juga digunakan dalam GROUP BY klausul atau fungsi agregat, kondisi pencarian dapat muncul sebagai WHERE klausa atau HAVING klausa - Anda dapat memutuskan mana saat Membuat kondisi. Misalnya, pernyataan berikut membuat harga rata-rata untuk judul untuk setiap penerbit, lalu menampilkan rata-rata untuk penerbit di mana harga rata-rata lebih besar dari $10,00:

    SELECT pub_id,
           AVG(price)
    FROM titles
    GROUP BY pub_id
    HAVING (AVG(price) > 10);
    
  • Jika Anda menggunakan fungsi agregat dalam kondisi pencarian, kondisi tersebut melibatkan ringkasan dan karenanya harus menjadi bagian HAVING dari klausa.