• Tidak ada hasil yang ditemukan

MENGGALI INFORMASI DENGAN MENGELOMPOKKAN JAWABAN

Dalam dokumen Structured Query Language SQL (Halaman 106-121)

Setiap kumpulan data menceritakan sebuah cerita, dan tugas analis data adalah mencari tahu apa cerita itu. Di Bab 2, Anda mempelajari tentang mewawancarai data menggunakan pernyataan SELECT, yang mencakup pengurutan kolom, menemukan nilai yang berbeda, dan memfilter hasil. Anda juga telah mempelajari dasar-dasar matematika SQL, tipe data, desain tabel, dan menggabungkan tabel. Dengan semua alat ini di bawah ikat pinggang Anda, Anda siap untuk meringkas data menggunakan pengelompokan dan fungsi SQL.

Meringkas data memungkinkan kami mengidentifikasi informasi berguna yang tidak dapat kami lihat sebaliknya. Dalam bab ini, kami akan menggunakan institusi perpustakaan lokal Anda yang terkenal sebagai contoh kami.

Meskipun ada perubahan dalam cara orang mengkonsumsi informasi, perpustakaan tetap menjadi bagian penting dari komunitas di seluruh dunia. Namun internet dan kemajuan teknologi perpustakaan telah mengubah cara kita menggunakan perpustakaan. Misalnya, ebook dan akses online ke materi digital sekarang memiliki tempat permanen di perpustakaan bersama dengan buku dan majalah.

Di Amerika Serikat, Institute of Museum and Library Services (IMLS) mengukur aktivitas perpustakaan sebagai bagian dari Survei Perpustakaan Umum tahunan. Survei ini mengumpulkan data dari lebih dari 9.000 entitas administrasi perpustakaan, yang didefinisikan oleh survei sebagai lembaga yang menyediakan layanan perpustakaan ke lokasi tertentu.

Beberapa lembaga adalah sistem perpustakaan kabupaten, dan yang lainnya adalah bagian dari distrik sekolah. Data masing-masing instansi meliputi jumlah cabang, staf, buku, jam buka per tahun, dan sebagainya. IMLS telah mengumpulkan data setiap tahun sejak 1988 dan mencakup semua lembaga perpustakaan umum di 50 negara bagian ditambah Distrik Columbia dan beberapa wilayah, seperti Samoa Amerika. (Baca lebih lanjut tentang program ini di https://www.imls.gov/research-evaluation/data-collection/public-libraries-survey/.)

Untuk latihan ini, kami akan mengambil peran sebagai analis yang baru saja menerima salinan baru kumpulan data perpustakaan untuk menghasilkan laporan yang menjelaskan tren dari data. Kita perlu membuat dua tabel, satu dengan data dari survei 2014 dan yang kedua dari survei 2009. Kemudian kami akan merangkum data yang lebih menarik di setiap tabel dan menggabungkan tabel untuk melihat tren lima tahun. Selama analisis, Anda akan mempelajari teknik SQL untuk meringkas data menggunakan fungsi dan pengelompokan agregat.

Membuat Tabel Survei Perpustakaan

Mari buat tabel survei perpustakaan 2014 dan 2009 dan impor datanya. Kami akan menggunakan tipe data yang sesuai untuk setiap kolom dan menambahkan batasan dan indeks ke setiap tabel untuk menjaga integritas data dan mempercepat kueri.

Membuat Tabel Data Perpustakaan 2014

Kita akan mulai dengan membuat tabel untuk data perpustakaan 2014. Menggunakan pernyataan CREATE TABLE, sintaks berikut ini untuk membuat pls_fy2014_pupld14a, tabel untuk File Data Perpustakaan Umum tahun fiskal 2014 dari Survei Perpustakaan Umum. File Data Perpustakaan Umum merangkum data di tingkat instansi, menghitung aktivitas di semua outlet instansi, yang meliputi perpustakaan pusat, perpustakaan cabang, dan toko buku. Survei tahunan menghasilkan dua file tambahan yang tidak akan kami gunakan: satu merangkum data di tingkat negara bagian, dan yang lainnya memiliki data di masing-masing outlet. Untuk latihan ini, file-file tersebut berlebihan, tetapi Anda dapat membaca tentang data yang ada di dalam kamus data 2014, tersedia dari IMLS di

https://www.imls.gov/sites/default/files/fy2014_pls_data_file_documentation.pdf.

Untuk kenyamanan, saya telah membuat skema penamaan untuk tabel: pls mengacu pada judul survei, fy2014 adalah tahun fiskal yang dicakup data, dan pupld14a adalah nama file tertentu dari survei. Untuk kesederhanaan, saya telah memilih hanya 72 kolom yang lebih relevan dari 159 di file survei asli untuk mengisi tabel pls_fy2014_pupld14a, tidak termasuk data seperti kode yang menjelaskan sumber tanggapan individu. Ketika perpustakaan tidak menyediakan data, agensi memperoleh data menggunakan cara lain, tetapi kami tidak memerlukan informasi itu untuk latihan ini.

Perhatikan bahwa Daftar 8-1 disingkat untuk kemudahan. Kumpulan data lengkap dan kode untuk membuat dan memuat tabel ini tersedia untuk diunduh dengan semua sumber buku di https://www.nostarch.com/practicalSQL/.

CREATE TABLE pls_fy2014_pupld14a ( stabr varchar(2) NOT NULL,

libid varchar(6) CONSTRAINT fscskey2014_key PRIMARY KEY, libname varchar(100) NOT NULL,

obereg varchar(2) NOT NULL, rstatus integer NOT NULL, statstru varchar(2) NOT NULL, statname varchar(2) NOT NULL, stataddr varchar(2) NOT NULL, --snip--

wifisess integer NOT NULL, yr_sub integer NOT NULL );

CREATE INDEX libname2014_idx ON pls_fy2014_pupld14a (libname);

CREATE INDEX statbr2014_idx ON pls_fy2014_pupld14a (stabr);

CREATE INDEX city2014_idx ON pls_fy2014_pupld14a (city);

CREATE INDEX visits2014_idx ON pls_fy2014_pupld14a (visits);

COPY pls_fy2014_pupld14a

FROM ‘C:\YourDirectory\pls_fy2014_pupld14a.csv’

WITH (FORMAT CSV, HEADER);

Setelah menemukan kode dan file data untuk Daftar 8-1, sambungkan ke database analisis Anda di pgAdmin dan jalankan. Ingatlah untuk mengubah C:\YourDirectory\ ke jalur tempat Anda menyimpan file CSV.

Inilah yang dilakukannya: pertama, kode membuat tabel melalui CREATE TABLE. Kami menetapkan batasan kunci utama ke kolom bernama fscskey , kode unik yang menurut kamus data ditetapkan untuk setiap perpustakaan. Karena unik, hadir di setiap baris, dan tidak mungkin berubah, ia dapat berfungsi sebagai kunci utama alami.

Definisi untuk setiap kolom mencakup tipe data yang sesuai dan batasan NOT NULL di mana kolom tidak memiliki nilai yang hilang. Jika Anda perhatikan baik-baik di kamus data, Anda akan melihat bahwa saya mengubah kolom bernama database di file CSV menjadi database di tabel.

Alasannya adalah bahwa database adalah kata kunci yang dicadangkan SQL, dan tidak bijaksana untuk menggunakan kata kunci sebagai pengidentifikasi karena dapat menyebabkan konsekuensi yang tidak diinginkan dalam kueri atau fungsi lainnya.

Kolom startdat dan enddat berisi tanggal, tetapi kami telah menyetel tipe datanya ke varchar(10) dalam kode karena dalam file CSV kolom tersebut menyertakan nilai bukan tanggal, dan impor kami akan gagal jika kami mencoba menggunakan data tanggal Tipe. Di Bab 9, Anda akan belajar cara membersihkan kasus seperti ini. Untuk saat ini, kolom-kolom itu baik-baik saja.

Setelah membuat tabel, kami menambahkan indeks ke kolom yang akan kami gunakan untuk kueri. Ini memberikan hasil yang lebih cepat ketika kami mencari kolom untuk perpustakaan tertentu. Pernyataan COPY mengimpor data dari file CSV bernama pls_fy2014_pupld14a.csv menggunakan jalur file yang Anda berikan.

Membuat Tabel Data Perpustakaan 2009

Membuat tabel untuk data perpustakaan tahun 2009 mengikuti langkah yang sama, seperti yang ditunjukkan pada listing dibawah ini. Sebagian besar survei yang sedang berlangsung akan memiliki beberapa perubahan dari tahun ke tahun karena pembuat survei memikirkan pertanyaan baru atau memodifikasi yang sudah ada, sehingga kolom yang disertakan akan sedikit berbeda dalam tabel ini. Itulah salah satu alasan penyedia data membuat tabel baru alih-alih menambahkan baris ke tabel kumulatif. Misalnya, file 2014 memiliki kolom wifisess, yang mencantumkan jumlah tahunan sesi Wi-Fi yang disediakan perpustakaan, tetapi kolom ini tidak ada dalam data 2009. Kamus data untuk tahun survei ini ada di

https://www.imls.gov/sites/default/files/fy2009_pls_data_file_documentation.pdf.

Setelah Anda membuat tabel ini, impor file CSV pls_fy2009_pupld09a. File ini juga tersedia

untuk diunduh bersama dengan semua sumber buku di

https://www.nostarch.com/practicalSQL/. Ketika Anda telah menyimpan file dan menambahkan jalur file yang benar ke pernyataan COPY, jalankan kode dibawah ini:

CREATE TABLE pls_fy2009_pupld09a ( stbr varchar(2) NOT NULL,

fscskey varchar(6) CONSTRAINT fxckey2009_key PRIMARY KEY, libid varchar(20) NOT NULL,

address varchar(35) NOT NULL, city varchar(20) NOT NULL, zip varchar(5) NOT NULL, zip4 varchar(4) NOT NULL, cnty varchar(20) NOT NULL,

--snip--

fipsst varchar(2) NOT NULL, fipsco varchar(3) NOT NULL, );

CREATE INDEX libname2009_idx ON pls_fy2009_pupld09a (libname);

CREATE INDEX stabr2009_idx ON pls_fy2009_pupld09a (stabr);

CREATE INDEX city2009_idx ON pls_fy2009_pupld09a (city);

CREATE INDEX visits2009_idx ON pls_fy2009_pupld09a (visits);

COPY pls_fy2009_pupld09a

FROM ‘C:\YourDirectory\pls_fy2009_pupl09a.csv’

WITH (FORMAT CSV, HEADER);

Kami menggunakan fscskey sebagai kunci utama lagi , dan kami membuat indeks pada libname dan kolom lainnya. Sekarang, mari kita menambang dua tabel data perpustakaan dari 2014 dan 2009 untuk menemukan history mereka.

Menjelajahi Data Perpustakaan Menggunakan Fungsi Agregat

Fungsi agregat menggabungkan nilai dari beberapa baris dan mengembalikan satu hasil berdasarkan operasi pada nilai tersebut. Misalnya, Anda dapat mengembalikan nilai rata-rata dengan fungsi avg(), seperti yang Anda pelajari di Bab 5. Itu hanya salah satu dari banyak fungsi agregat di SQL. Beberapa adalah bagian dari standar SQL, dan lainnya khusus untuk PostgreSQL dan manajer database lainnya. Sebagian besar fungsi agregat yang digunakan dalam bab ini adalah bagian dari SQL standar (daftar lengkap agregat PostgreSQL ada di

https://www.postgresql.org/docs/current/static/functions-aggregate.html).

Di bagian ini, kita akan membahas data pustaka menggunakan agregat pada satu dan beberapa kolom, lalu menjelajahi bagaimana Anda dapat memperluas penggunaannya dengan mengelompokkan hasil yang mereka kembalikan dengan nilai dari kolom tambahan.

Menghitung Baris dan Nilai Menggunakan count()

Setelah mengimpor kumpulan data, langkah pertama yang masuk akal adalah memastikan tabel memiliki jumlah baris yang diharapkan. Misalnya, dokumentasi IMLS untuk data 2014 mengatakan file yang kami impor memiliki 9.305 baris, dan file 2009 memiliki 9.299 baris. Saat kita menghitung jumlah baris dalam tabel tersebut, hasilnya harus sesuai dengan jumlah tersebut.

Fungsi agregat count(), yang merupakan bagian dari standar ANSI SQL, memudahkan untuk memeriksa jumlah baris dan melakukan tugas penghitungan lainnya. Jika kita memberikan asterisk sebagai input, seperti count(*), asterisk bertindak sebagai wildcard, sehingga fungsi mengembalikan jumlah baris tabel terlepas dari apakah mereka menyertakan nilai NULL. Kami melakukan ini di kedua pernyataan di kode bawah ini:

SELECT count(*)

FROM pls_fy2014_pupld14a;

SELECT count(*)

FROM pls_fy2009_pupld09a;

Jalankan koding tersebut untuk melihat jumlah baris tabel. Untuk pls_fy2014_pupld14a, hasilnya harus:

count --- 9305

Dan untuk pls_fy2009_pupld09a, hasilnya harus:

count --- 9299

Kedua hasil cocok dengan jumlah baris yang kami harapkan.

Catatan: Anda juga dapat memeriksa jumlah baris menggunakan antarmuka pgAdmin, tetapi ini kikuk. Mengklik kanan nama tabel di browser objek pgAdmin dan memilih Lihat/Edit DataSemua Baris menjalankan kueri SQL untuk semua baris. Kemudian, pesan pop-up di panel hasil menunjukkan jumlah baris, tetapi menghilang setelah beberapa detik.

Membandingkan jumlah baris tabel dengan apa yang dikatakan dokumentasi adalah penting karena akan mengingatkan kita akan masalah seperti baris yang hilang atau kasus di mana kita mungkin telah mengimpor file yang salah.

Menghitung Nilai yang Ada dalam Kolom

Untuk mengembalikan jumlah baris dalam kolom tertentu yang berisi nilai, kami menyediakan nama kolom sebagai input ke fungsi count() daripada tanda bintang. Misalnya, jika Anda memindai pernyataan CREATE TABLE untuk kedua tabel perpustakaan dengan cermat, Anda akan melihat bahwa kami menghilangkan batasan NOT NULL untuk kolom gaji ditambah beberapa lainnya. Alasannya adalah tidak semua agen perpustakaan melaporkan gaji, dan beberapa baris memiliki nilai NULL.

Untuk menghitung jumlah baris di kolom gaji dari 2014 yang memiliki nilai, jalankan fungsi count():

SELECT count(salaries) FROM pls_fy2014_pupld014a;

Hasilnya menunjukkan 5.983 baris memiliki nilai gaji:

count --- 5983

Jumlah ini jauh lebih rendah dari jumlah baris yang ada pada tabel. Dalam data tahun 2014, sedikit kurang dari dua pertiga agen melaporkan gaji, dan Anda ingin mencatat fakta itu ketika melaporkan hasil perhitungan yang dilakukan pada kolom tersebut. Pemeriksaan ini penting karena sejauh mana nilai yang ada dalam kolom dapat memengaruhi keputusan Anda apakah akan melanjutkan analisis sama sekali. Memeriksa dengan ahli tentang topik dan menggali lebih dalam data biasanya merupakan ide yang baik, dan saya merekomendasikan mencari nasihat ahli sebagai bagian dari metodologi analisis yang lebih luas.

Menghitung Nilai Berbeda dalam Kolom

Dalam Bab 2, saya membahas kata kunci DISTINCT, yang merupakan bagian dari standar SQL.

Saat ditambahkan setelah SELECT dalam kueri, DISTINCT mengembalikan daftar nilai unik. Kita bisa menggunakannya untuk melihat nilai unik dalam satu kolom, atau kita bisa melihat kombinasi nilai unik dari beberapa kolom. Penggunaan lain dari DISTINCT adalah menambahkannya ke fungsi count() , yang menyebabkan fungsi mengembalikan hitungan nilai yang berbeda dari kolom.

Koding dibawah ini menunjukkan dua kueri. Yang pertama menghitung semua nilai di kolom libname tabel 2014. Yang kedua melakukan hal yang sama tetapi menyertakan DISTINCT di depan nama kolom. Jalankan keduanya, satu per satu.

SELECT count(libname) FROM pls_fy2014_pupld14a;

SELECT count(DISTINCT libname) FROM pls_fy2014_pupld14a;

Kueri pertama mengembalikan jumlah baris yang cocok dengan jumlah baris dalam tabel yang kami temukan menggunakan koding dibawah ini:

count --- 9305

Itu bagus. Kami berharap nama lembaga perpustakaan tercantum di setiap baris. Tetapi kueri kedua mengembalikan angka yang lebih kecil:

count --- 8515

Menggunakan DISTINCT untuk menghapus duplikat mengurangi jumlah nama perpustakaan menjadi 8.515 yang unik. Pemeriksaan saya lebih dekat terhadap data menunjukkan bahwa 530 lembaga perpustakaan berbagi nama dengan satu atau lebih lembaga lain. Sebagai salah satu contoh, sembilan lembaga perpustakaan bernama OXFORD PUBLIC LIBRARY dalam tabel, masing-masing di kota atau kota kecil bernama Oxford di negara bagian yang berbeda, termasuk Alabama, Connecticut, Kansas, dan Pennsylvania, antara lain. Kami akan menulis kueri untuk melihat kombinasi nilai yang berbeda di “Menggabungkan Data Menggunakan GROUP BY” di halaman 120.

Menemukan Nilai Maksimum dan Minimum Menggunakan max() dan min()

Mengetahui angka terbesar dan terkecil dalam kolom berguna untuk beberapa alasan.

Pertama, ini membantu kita memahami cakupan nilai yang dilaporkan untuk variabel tertentu.

Kedua, fungsi yang digunakan, max() dan min(), dapat mengungkapkan masalah tak terduga dengan data, seperti yang akan Anda lihat sekarang dengan data perpustakaan.

Baik max() dan min() bekerja dengan cara yang sama: Anda menggunakan pernyataan SELECT yang diikuti oleh fungsi dengan nama kolom yang disediakan. Koding dibawah ini menggunakan max() dan min() pada tabel 2014 dengan kolom kunjungan sebagai input. Kolom

kunjungan mencatat jumlah kunjungan tahunan ke badan perpustakaan dan semua cabangnya. Jalankan kodenya, lalu kami akan meninjau hasilnya.

SELECT max(visits), min(visits) FROM pls_fy2014_pupld14a;

Kueri yang dihasilkan adalah sebagai berikut:

max min --- --- 17729020 -3

Nah, itu menarik. Nilai maksimum lebih dari 17,7 juta masuk akal untuk sistem perpustakaan kota besar, tetapi -3 sebagai minimum? Di permukaan, hasil itu tampak seperti kesalahan, tetapi ternyata pembuat survei perpustakaan menggunakan konvensi yang bermasalah namun umum dalam pengumpulan data: menggunakan angka negatif atau nilai artifisial tinggi sebagai indikator.

Dalam hal ini, pembuat survei menggunakan angka negatif untuk menunjukkan kondisi berikut:

1. Nilai -1 menunjukkan "nonresponse" untuk pertanyaan itu.

2. Nilai -3 menunjukkan “tidak berlaku” dan digunakan pada saat suatu instansi perpustakaan tutup baik untuk sementara maupun permanen.

Kita harus memperhitungkan dan mengecualikan nilai negatif saat menjelajahi data, karena menjumlahkan kolom dan menyertakan nilai negatif akan menghasilkan total yang salah. Kita dapat melakukan ini dengan menggunakan klausa WHERE untuk memfilternya. Ada baiknya kami menemukan masalah ini sekarang daripada nanti setelah menghabiskan banyak waktu untuk analisis yang lebih dalam!

Catatan : Alternatif yang lebih baik untuk skenario nilai negatif ini adalah menggunakan NULL dalam baris di kolom kunjungan yang tidak memiliki data respons, lalu membuat kolom bendera_kunjungan terpisah untuk menyimpan kode yang menjelaskan alasannya. Teknik ini memisahkan nilai angka dari informasi tentangnya.

Menggabungkan Data Menggunakan GROUP BY

Saat Anda menggunakan klausa GROUP BY dengan fungsi agregat, Anda dapat mengelompokkan hasil menurut nilai dalam satu atau beberapa kolom. Ini memungkinkan kita untuk melakukan operasi seperti sum() atau count() untuk setiap status di tabel kita atau untuk setiap jenis agensi perpustakaan.

Mari kita jelajahi bagaimana menggunakan GROUP BY dengan agregat bekerja. Dengan sendirinya, GROUP BY, yang juga merupakan bagian dari standar ANSI SQL, menghilangkan nilai duplikat dari hasil, mirip dengan DISTINCT. Kueri menunjukkan klausa GROUP BY beraksi:

SELECT stabr

FROM pls_fy2014_pupld14a GROUP BY stabr

ORDER BY stabr;

Klausa GROUP BY mengikuti klausa FROM dan menyertakan nama kolom ke grup. Dalam hal ini, kami memilih stabr, yang berisi singkatan status, dan mengelompokkan menurut kolom yang sama. Kami kemudian menggunakan ORDER BY stabr juga sehingga hasil yang dikelompokkan dalam urutan abjad. Ini akan menghasilkan hasil dengan singkatan status unik dari tabel 2014. Berikut sebagian hasilnya:

stabr --- AK AL AR AS AZ CA --snip-- WV WY

Perhatikan bahwa tidak ada duplikat di 56 baris yang dikembalikan. Singkatan pos dua huruf standar ini mencakup 50 negara bagian ditambah Washington, D.C., dan beberapa wilayah AS, seperti Samoa Amerika dan Kepulauan Virgin AS.

Anda tidak dibatasi untuk mengelompokkan satu kolom saja. List program dibawah ini, kami menggunakan klausa GROUP BY pada data 2014 untuk menentukan kota dan kolom stabr untuk pengelompokan:

SELECT city, stabr FROM pls_fy2014_pupld14a GROUP BY city, stabr ORDER BY city, stabr;

Hasilnya diurutkan berdasarkan kota dan kemudian menurut negara bagian, dan hasilnya menunjukkan kombinasi unik dalam urutan itu:

city stabr --- --- ABBEVILLE AL ABBEVILLE LA ABBEVILLE SC ABBOTSFORD WI ABERDEEN ID ABERDEEN SD ABERNATHY TX

--snip--Pengelompokan ini mengembalikan 9.088 baris, 217 lebih sedikit dari total baris tabel. Hasilnya menunjukkan ada beberapa kesempatan di mana file menyertakan lebih dari satu agen perpustakaan untuk kombinasi kota dan negara bagian tertentu.

Menggabungkan GROUP BY dengan count()

Jika kita menggabungkan GROUP BY dengan fungsi agregat, seperti count(), kita dapat menarik lebih banyak informasi deskriptif dari data kita. Misalnya, kita tahu 9.305 lembaga perpustakaan ada di tabel 2014. Kita bisa mendapatkan jumlah agensi berdasarkan negara bagian dan mengurutkannya untuk melihat negara bagian mana yang paling banyak.

SELECT stabr, count(*) FROM pls_fy2014_pupld14a GROUP BY stabr

ORDER BY count(*) DESC;

Tidak seperti pada contoh sebelumnya, kami sekarang meminta nilai di kolom stabr dan jumlah nilai tersebut. Dalam daftar kolom untuk kueri , kami menetapkan fungsi stabr dan count() dengan tanda bintang sebagai inputnya. Seperti sebelumnya, tanda bintang menyebabkan count() menyertakan nilai NULL. Juga, ketika kita memilih kolom individu bersama dengan fungsi agregat, kita harus menyertakan kolom dalam klausa GROUP BY. Jika tidak, database akan mengembalikan kesalahan yang menyuruh kami melakukannya. Alasannya adalah Anda tidak dapat mengelompokkan nilai dengan menggabungkan dan memiliki nilai kolom yang tidak dikelompokkan dalam kueri yang sama.

Untuk mengurutkan hasil dan memiliki status dengan jumlah agensi terbesar di atas, kita dapat ORDER BY fungsi count() dalam urutan menurun menggunakan DESC.

Jalankan kode dibawah ini. Hasilnya menunjukkan New York, Illinois, dan Texas sebagai negara bagian dengan jumlah agen perpustakaan terbanyak pada tahun 2014:

stabr count --- --- NY 756 IL 625 TX 556 IA 543 PA 455 MI 389 WI 381 MA 370 --snip--

Ingat bahwa tabel kami mewakili lembaga perpustakaan yang melayani suatu lokalitas. Hanya karena New York, Illinois, dan Texas memiliki jumlah agen perpustakaan terbesar tidak berarti mereka memiliki jumlah gerai terbanyak di mana Anda dapat masuk dan membaca rak dengan teliti. Sebuah lembaga mungkin hanya memiliki satu perpustakaan pusat, atau mungkin tidak memiliki perpustakaan pusat tetapi 23 cabang tersebar di seluruh daerah. Untuk menghitung outlet, setiap baris dalam tabel juga memiliki nilai di kolom centlib dan branlib, yang masing-masing mencatat jumlah perpustakaan pusat dan cabang. Untuk menemukan total, kita akan menggunakan fungsi agregat sum() pada kedua kolom.

Menggunakan GROUP BY pada Beberapa Kolom dengan count()

Kami dapat mengumpulkan lebih banyak informasi dari data kami dengan menggabungkan GROUP BY dengan fungsi count() dan beberapa kolom. Misalnya, kolom stataddr di kedua tabel berisi kode yang menunjukkan apakah alamat agensi berubah dalam setahun terakhir. Nilai dalam stataddr adalah:

00 Tidak ada perubahan dari tahun lalu 07 Pindah ke lokasi baru

15 Perubahan alamat kecil

Daftar 8-10 menunjukkan kode untuk menghitung jumlah agensi di setiap negara bagian yang pindah, mengalami sedikit perubahan alamat, atau tidak ada perubahan menggunakan GROUP BY dengan stabr dan stataddr dan menambahkan count():

SELECT stabr, stataddr, count(*) FROM pls_fy2014_pupld14a

GROUP BY stabr, stataddr

ORDER BY stabr ASC, count(*) DESC;

Bagian kunci dari kueri adalah nama kolom dan fungsi count() setelah SELECT , dan memastikan kedua kolom tercermin dalam klausa GROUP BY . Efek pengelompokan berdasarkan dua kolom adalah count() akan menampilkan jumlah kombinasi unik stabr dan stataddr.

Untuk membuat output lebih mudah dibaca, mari kita urutkan dulu kode negara bagian dalam urutan menaik dan kemudian menurut hitungan dalam urutan menurun . Berikut adalah hasilnya:

stabr stataddr count --- --- ---

AK 00 70

AK 15 10

AK 07 5

AL 00 221

AL 07 3

AR 00 58

AS 00 1

AZ 00 91

--snip--Beberapa baris pertama dari hasil menunjukkan bahwa kode 00 (tidak ada perubahan alamat) adalah nilai yang paling umum untuk setiap negara bagian. Kami mengharapkan itu karena kemungkinan ada lebih banyak agen perpustakaan yang belum mengubah alamat daripada yang telah. Hasilnya membantu meyakinkan kami bahwa kami menganalisis data dengan cara yang baik. Jika kode 07 (dipindahkan ke lokasi baru) adalah yang paling sering di setiap negara bagian, itu akan menimbulkan pertanyaan tentang apakah kami telah menulis kueri dengan benar atau apakah ada masalah dengan data.

Meninjau kembali sum() untuk Memeriksa Kunjungan Perpustakaan

Sejauh ini, kami telah menggabungkan pengelompokan dengan fungsi agregat, seperti count(), pada kolom dalam satu tabel untuk memberikan hasil yang dikelompokkan berdasarkan nilai kolom. Sekarang mari kita perluas teknik untuk menyertakan pengelompokan dan agregasi di seluruh tabel yang digabungkan menggunakan data pustaka 2014 dan 2009. Tujuan kami adalah mengidentifikasi tren kunjungan perpustakaan selama periode lima tahun tersebut.

Untuk melakukan ini, kita perlu menghitung total menggunakan fungsi agregat sum().

Sebelum kita menggali kueri ini, mari kita bahas masalah penggunaan nilai -3 dan -1 untuk menunjukkan "tidak berlaku" dan "nonresponse". Untuk mencegah angka negatif tanpa arti sebagai kuantitas memengaruhi analisis, kami akan memfilternya menggunakan klausa WHERE untuk membatasi kueri ke baris dengan nilai kunjungan nol atau lebih besar.

Dalam dokumen Structured Query Language SQL (Halaman 106-121)