Fungsi tetingkap digunakan dalam SQL untuk mengira pelbagai baris data yang berkaitan dengan baris semasa tanpa menggabungkan hasilnya. Ia membezakan dirinya daripada fungsi agregat konvensional seperti jumlah atau AVG, dan boleh mengekalkan semua baris jadual asal dan menambah nilai yang dikira seperti jumlah yang berjalan, kedudukan, atau purata bergerak. Kegunaan umum termasuk: 1. Peringkat baris (menggunakan pangkat (), DENSE_RANK (), ROW_NUMBER ()); 2. Jumlah kumulatif (seperti jualan kumulatif bulanan); 3. Perbandingan baris semasa dengan baris sebelumnya; 4. Dapatkan nama N atas setiap kumpulan. Struktur asas adalah function_name (argumen) ke atas ([partition by] [order by] [frame_clause]), di mana partition oleh pengumpulan, perintah dengan menyusun, dan frame_clause mentakrifkan julat pengiraan. Sesuai untuk senario di mana data dalam kumpulan perlu dibandingkan, nilai agregat dipaparkan tanpa kehilangan butiran, mengelakkan sambungan diri, dan hanya boleh digunakan dalam pilih atau pesanan oleh. Selepas menguasai, pertanyaan kompleks akan dipermudahkan.
Fungsi tetingkap dalam SQL adalah alat yang membolehkan anda melakukan pengiraan merentasi satu set baris jadual yang entah bagaimana berkaitan dengan baris semasa - tanpa runtuh hasilnya menjadi satu nilai seperti fungsi agregat biasa (seperti SUM()
atau AVG()
).

Mereka sangat berguna apabila anda ingin menyimpan semua baris asal anda tetapi juga menambah nilai yang dikira, seperti jumlah yang berlari, kedudukan, atau purata bergerak.
Apa yang menjadikan fungsi tetingkap berbeza?
Agregat biasa data yang konsisten. Sebagai contoh, jika anda menggunakan SUM(sales)
tanpa fungsi tetingkap, ia akan memberi anda satu jumlah keseluruhan untuk keseluruhan dataset (atau subset dikumpulkan). Tetapi dengan fungsi tetingkap, anda boleh menunjukkan setiap baris individu dan jumlah, pangkat, atau purata yang sama pada masa yang sama.

Contohnya:
Pilih nama, jabatan, gaji, AVG (Gaji) Lebih (Partition mengikut Jabatan) Dari pekerja;
Ini menunjukkan gaji setiap pekerja dan gaji purata di jabatan mereka - semuanya dalam satu pandangan.

Oleh itu, bukannya meringkaskan dan kehilangan terperinci, fungsi tetingkap mengekalkan konteks sambil membiarkan anda mengira ringkasan pintar.
Penggunaan fungsi tingkap biasa
Berikut adalah beberapa perkara yang paling biasa orang menggunakannya untuk:
- Barisan ranking : Seperti jurujual kedudukan dengan berapa banyak yang mereka jual.
- Jumlah Jumlah / Jumlah Kumulatif : Seperti Jumlah Jualan dari masa ke masa.
- Membandingkan baris semasa ke baris sebelumnya/seterusnya : Berguna dalam analisis siri masa.
- Mendapatkan N Top Per Kumpulan : Seperti 3 pelajar teratas setiap kelas.
Mari lihat beberapa contoh.
Baris ranking
Anda boleh menggunakan RANK()
, DENSE_RANK()
, atau ROW_NUMBER()
untuk memberikan pangkat dalam kumpulan:
Pilih nama, jabatan, gaji, Pangkat () lebih (partition oleh perintah jabatan mengikut gaji desc) Dari pekerja;
Ini mempamerkan pekerja dengan gaji dalam setiap jabatan , jadi anda dapat dengan mudah melihat siapa yang menjadi penghasil tertinggi di setiap.
Jumlah yang berlari
Jika anda menjejaki jualan bulanan, jumlah yang berjalan membantu menunjukkan pertumbuhan dari masa ke masa:
Pilih Bulan, Jualan, Jumlah (jualan) lebih (pesanan mengikut baris bulan antara baris yang tidak terkawal dan semasa) Dari bulanan_sales;
Itu memberi anda jumlah kumulatif sehingga setiap bulan.
Struktur asas fungsi tetingkap
Sintaks umum kelihatan seperti ini:
fungsi_name (argumen) lebih ( [Partition by column_list] [Pesanan oleh sort_columns] [frame_clause] )
-
PARTITION BY
: Sama dengan kumpulan oleh - ia membahagikan baris ke dalam kumpulan untuk memohon fungsi secara berasingan. -
ORDER BY
: mengawal susunan baris di dalam tingkap. -
frame_clause
: mentakrifkan baris mana yang dimasukkan dalam pengiraan (seperti dari baris pertama hingga baris semasa).
Sesetengah pangkalan data mempunyai lalai yang sedikit berbeza atau sijil yang disokong, jadi baik untuk memeriksa apa yang ada dalam sistem anda.
Bilakah anda harus menggunakannya?
Gunakan fungsi tetingkap apabila anda perlu:
- Bandingkan baris dengan orang lain dalam kumpulan yang sama.
- Tunjukkan nilai agregat di sebelah data mentah.
- Elakkan diri sendiri hanya untuk mengira sesuatu yang relatif.
Mereka memudahkan pertanyaan kompleks dan sering melakukan lebih baik daripada alternatif seperti subqueries berkorelasi atau pelbagai gabungan.
Hanya ingat: fungsi tetingkap hanya berfungsi dalam SELECT
atau ORDER BY
klausa - tidak di WHERE
.
Pada dasarnya itu sahaja. Sebaik sahaja anda mendapat hang mereka, mereka menjadi salah satu ciri SQL yang anda tertanya -tanya bagaimana anda hidup tanpa.
Atas ialah kandungan terperinci Apakah fungsi tetingkap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Jika/lain logik dilaksanakan terutamanya dalam pernyataan pilih SQL. 1. Struktur Casewhen boleh mengembalikan nilai yang berbeza mengikut syarat -syarat, seperti menandakan rendah/sederhana/tinggi mengikut selang gaji; 2. MySQL menyediakan fungsi IF () untuk pilihan mudah dua untuk menilai, seperti sama ada tanda memenuhi kelayakan bonus; 3. Kes boleh menggabungkan ungkapan Boolean untuk memproses pelbagai kombinasi keadaan, seperti menilai kategori pekerja "Salary High dan Young"; Secara keseluruhan, kes lebih fleksibel dan sesuai untuk logik kompleks, manakala jika sesuai untuk penulisan mudah.

Buat jadual sementara dalam SQL untuk menyimpan set hasil pertengahan. Kaedah asas ialah menggunakan pernyataan CreateTemaryTable. Terdapat perbezaan dalam butiran dalam sistem pangkalan data yang berbeza; 1. Sintaks Asas: Kebanyakan pangkalan data menggunakan createtemararyTableTemp_table (definisi medan), manakala SQLServer menggunakan # untuk mewakili jadual sementara; 2. Menjana jadual sementara dari data sedia ada: Struktur dan data boleh disalin secara langsung melalui CreateTemaryTableas atau SelectInto; 3. Nota termasuk skop tindakan adalah terhad kepada sesi semasa, menamakan semula mekanisme pemprosesan, overhead prestasi dan perbezaan tingkah laku dalam urus niaga. Pada masa yang sama, indeks boleh ditambah ke jadual sementara untuk mengoptimumkan

Kaedah mendapatkan tarikh dan masa semasa dalam SQL berbeza dari sistem pangkalan data. Kaedah umum adalah seperti berikut: 1. MySQL dan MariaDB menggunakan sekarang () atau current_timeStamp, yang boleh digunakan untuk menanyakan, memasukkan dan menetapkan nilai lalai; 2. 3. SQLServer menggunakan getDate () atau sysdateTime (), yang menyokong tetapan nilai sisipan dan lalai; 4. Oracle menggunakan sysdate atau systimestamp, dan perhatikan penukaran format tarikh. Menguasai fungsi ini membolehkan anda memproses korelasi masa yang fleksibel dalam pangkalan data yang berbeza

Kata kunci yang berbeza digunakan dalam SQL untuk mengeluarkan baris pendua dalam hasil pertanyaan. Fungsi terasnya adalah untuk memastikan bahawa setiap baris data yang dikembalikan adalah unik dan sesuai untuk mendapatkan senarai nilai unik untuk satu lajur atau lajur berganda, seperti jabatan, status atau nama. Apabila menggunakannya, sila ambil perhatian bahawa tindakan yang berbeza pada keseluruhan baris dan bukannya satu lajur, dan apabila digunakan dalam kombinasi dengan pelbagai lajur, ia mengembalikan gabungan unik semua lajur. Sintaks asas adalah selectDistinctColumn_Namefromtable_name, yang boleh digunakan untuk lajur tunggal atau pertanyaan lajur berganda. Perhatikan kesan prestasinya apabila menggunakannya, terutamanya pada set data yang besar yang memerlukan operasi penyortiran atau hash. Kesalahpahaman yang biasa termasuk kepercayaan yang salah bahawa berbeza hanya digunakan untuk lajur tunggal dan disalahgunakan dalam senario di mana tidak perlu deduplicate d

Perbezaan utama di mana dan mempunyai masa penapisan: 1. 2. Memiliki menapis keputusan selepas pengelompokan, dan bertindak ke atas data agregat, dan boleh menggunakan fungsi agregat. Sebagai contoh, apabila menggunakan di mana untuk menyaring pekerja bergaji tinggi dalam pertanyaan, kemudian statistik kumpulan, dan kemudian gunakan untuk menyaring jabatan dengan gaji purata lebih daripada 60,000, perintah kedua tidak dapat diubah. Di mana sentiasa melaksanakan terlebih dahulu untuk memastikan bahawa hanya baris yang memenuhi syarat -syarat yang mengambil bahagian dalam kumpulan, dan mempunyai penapis lebih lanjut output akhir berdasarkan hasil pengumpulan.

Dalam reka bentuk pangkalan data, gunakan pernyataan createtable untuk menentukan struktur jadual dan kekangan untuk memastikan integriti data. 1. Setiap jadual perlu menentukan medan, jenis data dan kunci utama, seperti user_idintprimarykey; 2. Tambahkan kekangan notnull, unik, lalai dan lain -lain untuk meningkatkan konsistensi data, seperti e -melVarchar (255) notnullunique; 3. Gunakan ForeignKey untuk mewujudkan hubungan antara jadual, seperti Jadual Pesanan Rujukan Kunci Utama Jadual Pengguna melalui USER_ID.

Asequenceobjectinsqlgeneratesasequenceofnumericvaluesbasedonspecifiedrules, yang biasa digunakanfforuniquenumbergenerationacrosssessionsandtables.1.itallowsdefiningIntegersThatIncrementOrdeCrementByAsetamount.2.UnlikeDuseDuseDuseDuseDus

SQLFUNCTIONSANDSTOREDPROCEDURESDIFFERINPORPOSE, RETURNBEHAVIOR, CALLECONTEXT, ANDSECURITY.1.FUNCTIONSERETurnasingLevalueorTableAndareUsedForpoPromputationsWithinqueries, sementaraProceDurePormComplexPleperationsOrpoperations
