Katika somo letu hili tutakwenda kufanya mabadiliko kadhaa kwenye database yetu. Hapa tunakwenda kuongeza column ya jina la baba, pia tutaongeza column ya masomo mawili, na ile ya alama tutaibadilisha kuwa somo. hivyo table yetu itakuwa na column hizi:-
- id
- jina_la_kwanza
- jina_la_pili
- kusoma
- kuhesabu
- kuandika
kisha weka data kadhaa kama nilivyoweka mimi. angalia picha hapo chini
kufikia hapo utakuw aupo tayari kwa ajili ya somo. kabla hatujaendelea na somo kwanz anikukumbuse kuwa tayari tulisajifunza baadhi ya function kwenye masomo yaliopita kama:-
- COUNT()
- AVG()
- SUM()
- MAX()
- MIN()
Katika somo hili tutaendelea kuangalia function nyingineze. Nikukumbushe tu kwanza sql ina mamia fu functions ambazo hatunazizungumzia. hivyo pitaia link hii https://www.w3schools.com/sql/sql_ref_mysql.asp utaweza kusoma function nyingi.
jinsi ya kuunganisha column
Yaani ipo hivi, hapo kwenye column tuna jina la kwanza na jina la pili, ambapo la kwanza ni la mtoto na la pili ni la baba. sasa tunataka watai kwa kusoma hizo column 2 tuzisome kama moja, hivyo basi itatubidi tuziunganishe.
kufanya hivyo tutatumia concat() ambapo ndani yake utaweka hizo column kwa kuzitenganisha na alama ya koma.
Mfano
SELECT concat(jina_la_kwanza, jina_la_pili) as jina FROM majibu;
sasa hapo kuna changamoto tunatakiwa tuzitatue. unaona hapo majina yamebanana, sasa tunataka kuyatengenisha. Ndani ya function ya concat unaweza pia kuunganisha kwa kuweka vitu vingine. Hivyo nitaongeza empty space kwa kutumia (“ “)
SELECT concat(jina_la_kwanza, " ", jina_la_pili) as jina FROM majibu;
Angalau hapo utaona jina la kwanza na la pili vimeachana kitogo.
Kuweka herufi kubwa au ndogo
Wakati mwingine utataka majina yawe katika format moja tu, kwa mfano kama yote yawe na herufi kubwa tupu ama ndogo tupu. Kuwa herufi kubwa utatumia UPPER() na kuwa herufi ndogo utatumia LOWER(). Ndani ya function utaweka jina la column unayotaka data zake ziwe katika herufi kubwa ama nogo.
Mfano:
SELECT concat(UPPER(jina_la_kwanza), " ", UPPER(jina_la_pili)) as jina FROM majibu;
Hivyo hivyo kuwa herufi ndogo utatumia LOWER()
SELECT concat(LOWER(jina_la_kwanza), " ", LOWER(jina_la_pili)) as jina FROM majibu;
Kusoma data bila ya kujirudia
Cukulia mfano una table ina zaidi ya data 10000, sasa uataka kusoma datapekee bila ya kujirudia, kwa maana inaweezekana kuna watu wameandikwa zaidi ya mara moja. ili kuondoa utata huu tutatumia function ya distinct(). Sasa kwenye table yako ongeza jina moja lijirudie kwa mfano weka Saidi mkoya na kasimu bakari .
Sasa ngoja tuseome data hizo bila ya kujirudia kw akutumia distinct.
SELECT DISTINCT(concat(jina_la_kwanza, " ", jina_la_pili)) as jina FROM majibu;
Kutafuta jumla
Pia tunaweza kutengeneza function zetu wenyewe unachotakiw akufanya ni kuweka mabano ndani yake weka unachotaka kufanya, kama ilivyo kwenye kangage ntingine. Kwa mfano tunataka kutengeneza total ya maksi alizopata kila mwanafunzo. Hapo ni sawa na kujumlisha column zote zenye maks hapa tutatumia (kusoma + kuandika + kuhesabu) as jumla
Angalia mfao hapo chini:-
SELECT DISTINCT(concat(jina_la_kwanza, " ", jina_la_pili)) as jina, kusoma, kuandika, kuhesabu, (kusoma + kuandika + kuhesabu) as jumla FROM majibu;
Kutafuta wastani:
tumesoma tukiwa shule kuwa wastani ni sawa na juma gawa kwa idadi. Sasa hapa tunataka kutafuta wastani wa mwanafunzi katika masomo yake matatu. Hivyo ni sawa na kuchukuwa jumala ya masomo gawanya kwa 3. sawa na kusema (kusoma + kusndika + lihesabu)/3. Angalia mfano hapo chini:-
SELECT DISTINCT(concat(jina_la_kwanza, " ", jina_la_pili)) as jina, kusoma, kuandika, kuhesabu, (kusoma + kuandika + kuhesabu) as jumla, ((kusoma + kuandika + kuhesabu)/3) as wastani FROM majibu;
Kukadiria
Sasa hapo utaona changamoto ingine kuwa namba ni nyingi sana 43.6667 hiyo ni wastani wa Juma. sasa tunataka kuwe na kiwango kimoja tu. ili ukadirie utatumia round() hii utaweka idadi ya viwango unavyotaka. kama hutaki hata kiwango kimoja utaweka 0. mfano round(42.6667, 1) hii itakupa jibu 42.7 wach tuone kwenye query yetu:-
SELECT DISTINCT(concat(jina_la_kwanza, " ", jina_la_pili)) as jina, kusoma, kuandika, kuhesabu, (kusoma + kuandika + kuhesabu) as jumla, round(((kusoma + kuandika + kuhesabu)/3),1) as wastani FROM majibu;
Mwisho:
Katika somo linalofuata tutakwenda kujifunza jinsi ya kukamilisha matokeo ya mitihani hiyo kwa kutafuta wastani na position ya kila mwanafunzi. Unaweza kuanza kufanyia mazoezi kutafuta grade ya mwanafunzi kwa masomo yote pamoja na rank yake kwa masomo yote. Kisha panga wanafunzi kwa rank kutika mwanafunzi wa kwanza hadi wa mwisho.