rreeee
Jadi, inilah PERKHIDMATAN jadual saya, di mana (seperti yang kita lihat) pengalaman maksimum ialah 100. Saya perlu menulis pertanyaan untuk mencari bilangan kejadian 100 dalam pengalaman untuk setiap kumpulan yang terdiri daripada kedudukan (kiri, kanan, atas, bawah).
Jadi saya menulis:-
ID POSITION EXPERIENCE SALARY 1 top 90 1500 2 bottom 100 1500 3 top 90 750 4 left 90 1000 5 right 100 1300 6 top 90 1500 7 left 80 2000 8 top 80 1000 9 bottom 100 2000 10 left 100 2000
Output yang dijangkakan:-
select position,count(*) from service group by position having experience=(select max(experience) from service);
Tetapi, Ia memberi saya ralat: - "Bukan ungkapan GROUP BY"
Logik saya ialah mula-mula saya membahagikannya kepada kumpulan dan kemudian menggunakan klausa yang mempunyai untuk mengira tupel dalam setiap kumpulan dengan pengalaman yang sama dengan nilai maksimum. pengalaman.
Salah satu cara ialah menggunakan gabungan kiri dengan subkueri, yang hanya mengembalikan nilai maksimum. Kes diperlukan untuk mengembalikan kumpulan dengan nilai maksimum yang sewenang-wenangnya.
https://dbfiddle.uk/-8pHZ8wm
Untuk memudahkan pemahaman, jalankan pertanyaan di bawah dan anda akan mendapati bahawa max_experience kosong dalam setiap baris dalam jadual perkhidmatan kecuali nilai 100. Ringkasnya, anda hanya perlu mengira baris dalam kumpulan dengan nilai 100 dan 0 yang belum mencapai nilai pengalaman maksimum.
https://dbfiddle.uk/al8YYLk9
Edit. Jawapannya juga berfungsi dalam Oracle, tetapi kata kunci selepas subquery perlu dialih keluar
as
https://dbfiddle.uk/hhGB_xXx
Gunakan
求和
:Lihat biola.