katika somo hili utakwenda kujifunza namna ambavyo unaweza kutumia case katika kuchakata data husika.

 

chukulia mfano una list hii ya wanafunzi na maksi zao kwenye database yako. sasa tunataka data zetu ziweke column nyingine ya kuonyesha grade,kama ni 41 kwenda juu hiyo ni A, na 31 kwenda 40 hiyo ni B na 21 - 30 hiyo ni C na 11 - 20 hiyo ni D na 0 - 10 hiyo ni F. sasa hapo ndipo tunahitaji kutumia case.

 

program yetu itakwenda kuangalia yenyewe hizo maksi kisha itatengeneza column nyingine ya GRADE. kwanza tengeneza database iize matokeo ama jina lolote, kisha tengeneza tebo iite majibu ama jina lolote. kisha weka data hizo hapo chini. usisahau kuweka column ya id ama tumia code hizi za sql kutengeneza database na tebo hiyo

 

CREATE TABLE `majibu` (

  `id` int(11) NOT NULL,

  `jina` varchar(255) NOT NULL,

  `alama` int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

 

INSERT INTO `majibu` (`id`, `jina`, `alama`) VALUES

(1, 'Juma', 45),

(2, 'Halima', 32),

(3, 'Daudi', 15),

(4, 'Saidi', 28),

(5, 'Semeni', 8);

 

ALTER TABLE `majibu`

  ADD PRIMARY KEY (`id`);

ALTER TABLE `majibu`

  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

COMMIT;

 

 

Kanuni za kutumia case

kwanza utaandika keyword case ikifuatiwa na keyword WHEN kisha itafuatiwa na sharti unalotaka kuweka mfano case WHEN alama > 40  baada ya kuweka sharti utawekakeyword THEN ikifuatiwa na matokeo yaani nni kitokee endapo shari limetimia? mfano case WHEN alama > 40 THEN A itafuatiwa na ELSE ili kuonyesha matokeo nini kionekane endapo sharti halikufikiwa.mfano case WHEN alama > 40 THEN A ELSE “ongeza bidii”. mwisho wa case yako baada ya kuweka sharti zako zote utamaliza na neno END likifuatiwa na AS utaweka jina la column mpya yenye hizo grade. kwa mfano column yetu hapo tutaiita GRADE.

 

case WHEN alama > 40 THEN A ELSE “ongeza bidii” END as GRADE. code nzima itaonekana hivi

 

SELECT *, 

CASE 

     WHEN alama > 40 THEN 'A' 

     ELSE 'Ongeza bidii'

END as GRADE

FROM `majibu` ;

 

 

Sasa wacha wacha tuweke case kwa ajili ya ku display grade A, B, C, D na F

SELECT *, 

CASE 

     WHEN alama > 40 THEN 'A'

     WHEN alama > 30 AND alama <41 THEN 'B'

     WHEN alama > 20 AND alama < 31 THEN 'C'

     WHEN alama > 10 AND alama < 20 THEN 'D'

     ELSE 'F'

END as GRADE

FROM `majibu` ;

 

Kwa namna kama hii tunaweza kuongeza column nyingine. kwa mfano tunataka kuweka column ya maoni ya mwalimu, akiwa amepata A ni vizuri sana, B ni vizuri C ni wastani D ni dhaifu F ni mbaya.

 

SELECT *, 

CASE 

     WHEN alama > 40 THEN 'A'

     WHEN alama > 30 AND alama <41 THEN 'B'

     WHEN alama > 20 AND alama < 31 THEN 'C'

     WHEN alama > 10 AND alama < 20 THEN 'D'

     ELSE 'F'

END as GRADE,

CASE 

     WHEN alama > 40 THEN 'Vizuri sana'

     WHEN alama > 30 AND alama <41 THEN 'vizuri'

     WHEN alama > 20 AND alama < 31 THEN 'Wastani'

     WHEN alama > 10 AND alama < 20 THEN 'Dahifu'

     ELSE 'Mbaya'

END as Maoni

FROM `majibu` ;

 

Endapo else haitatumiaka na ikaonekana kuna data hazijapangiwa pa kukaa hapo italeta NULL. mfano kwenye datazetu hapo else tumeweka F ambapo tuna neema aliyepata 8. sasa kama hatutaiweka utaona kuna null

SELECT *, 

CASE 

     WHEN alama > 40 THEN 'A'

     WHEN alama > 30 AND alama <41 THEN 'B'

     WHEN alama > 20 AND alama < 31 THEN 'C'

     WHEN alama > 10 AND alama < 20 THEN 'D'

    

END as GRADE,

CASE 

     WHEN alama > 40 THEN 'Vizuri sana'

     WHEN alama > 30 AND alama <41 THEN 'vizuri'

     WHEN alama > 20 AND alama < 31 THEN 'Wastani'

     WHEN alama > 10 AND alama < 20 THEN 'Dahifu'

     

END as Maoni

FROM `majibu` ;

 

 

Jinisi ya ku comment kwenye sql

wakati mwingine unahitaji kuweka kumbukumbu kwa ajili ya matumizi yako baadaye. Ukitaka ku comment utatumia double slash ( // ) kwa ajili ya ku comment mstari mmoja, ila kama ni mistari zaidi ya mmoja utatumia /*     */ . comment haita husika kwenye matokeo ya code zako. Angalia code hizi hapa chini

SELECT *, 

CASE 

     WHEN alama > 40 THEN 'A'

     WHEN alama > 30 AND alama <41 THEN 'B'

     WHEN alama > 20 AND alama < 31 THEN 'C'

     WHEN alama > 10 AND alama < 20 THEN 'D'

     

    /*tumeondoa else

    utaona inaonesha NULL */

END as GRADE,

CASE 

     WHEN alama > 40 THEN 'Vizuri sana'

     WHEN alama > 30 AND alama <41 THEN 'vizuri'

     WHEN alama > 20 AND alama < 31 THEN 'Wastani'

     WHEN alama > 10 AND alama < 20 THEN 'Dahifu'

     -- hapa else haipo

END as Maoni

FROM `majibu` ;

 

Mwisho:

katika somo linaofuata tutakwend akujifunza jinsi ya kutafuta rank ama position yaani kupata mtu wa kwanza hadi wa mwisho..