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..