Advertisement
ntamas

50 sql feladat megoldása

Jan 27th, 2014
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.79 KB | None | 0 0
  1. /* 1. Hozza létre a táblákat! */
  2.  
  3. CREATE TABLE etel
  4. (
  5. ekod INT PRIMARY KEY,
  6. enev CHAR(40),
  7. etelf CHAR(25),
  8. kaloria INT,
  9. ar INT,
  10. keszido INT,
  11. skod INT
  12. );
  13.  
  14. CREATE TABLE etrend
  15. (
  16. ho INT,
  17. nap INT,
  18. etszam INT,
  19. ekod INT
  20. );
  21.  
  22. CREATE TABLE szakacs
  23. (
  24. skod INT PRIMARY KEY,
  25. snev CHAR(40),
  26. szev INT,
  27. fokozat CHAR(10)
  28. );
  29.  
  30. /* 2. Vigye fel az ETEL táblába a következő sort:  */
  31.  
  32. INSERT INTO etel VALUES (12345, "Túrós tészta", "TESZTA", 350, 340, 40, 123);
  33.  
  34. /* 3. Módosítsa a 54321 kódú étel árát 120 Ft-ra, tápértékét pedig 210 kcal-ra! */
  35.  
  36. UPDATE etel SET ar = 120, kaloria = 210 WHERE ekod = 54321;
  37.  
  38. /* 4. Minden étel árát növelje meg 20 Ft-tal! */
  39.  
  40. UPDATE etel SET ar = ar+20;
  41.  
  42. /* 5. A 300 kcal-nál táplálóbb ételek elkészítési idejét csökkentse 20 perccel! */
  43.  
  44. UPDATE etel SET keszido = keszido-20 WHERE kaloria>300;
  45.  
  46. /* 6. Az ETEL tála teljes tartalma: */
  47.  
  48. SELECT * FROM etel;
  49.  
  50. /* 7. Az ETEL táblából a LEVES ételféleségek adatai: */
  51.  
  52. SELECT * FROM etel WHERE etelf = "LEVES";
  53.  
  54. /* 8. Az ETEL táblából a leves, hús, gyümölcs ételféleségek nevét és árát: */
  55.  
  56. SELECT enev, ar FROM etel WHERE etelf = "LEVES" OR etelf = "HÚS" OR etelf = "GYÜMÖLCS";
  57.  
  58. /* 9. Az ETEL táblából a 200 kcal-nál táplálóbb ételek nevét, fajtáját és tápértékét: */
  59.  
  60. SELECT enev, etelf, kaloria FROM etel WHERE kaloria>200;
  61.  
  62. /* 10. Az ETEL táblából a 150 Ftnál olcsóbb ételek nevét, árát és tápértékét, ár szerint növekvő sorrendben! */
  63.  
  64. SELECT enev, ar, kaloria FROM etel WHERE ar<150 ORDER BY ar ASC;
  65.  
  66. /* 11. Az ETEL táblából a fél óra alatt elkészíthető ételek nevét, fajtáját és elkészítési idejét, elkészítési idő szerinti csökkenő sorrendben */
  67.  
  68. SELECT enev, etelf, keszido FROM etel WHERE keszido<=30 ORDER BY keszido DESC;
  69.  
  70. /* 12. ETEL táblából a különböző ételfajtákat */
  71.  
  72. SELECT etelf FROM etel GROUP BY etelf;
  73.  
  74. /* 13. ETEL táblából a 100 és 300 kcal közötti tápértékű ételek nevét, tápértékét és elkészítési idejét, tápérték szerint csökkenő sorrendben, az azonos tápértékű ételeket pedig névsor szerinti sorrendben. */
  75.  
  76. SELECT enev, kaloria, keszido FROM etel WHERE 100<kaloria AND kaloria<300 ORDER BY kaloria DESC, enev ASC; (nincs azonos!)
  77.  
  78. /* 14. ETEL táblából a 200 és 500 Ft közötti áru HÚS ételek nevét, árát és elkészítési idejét, ár szerint csökkenő, azon belül elkészítési idő szerint csökkenő sorrendben */
  79.  
  80. SELECT enev, ar, keszido FROM etel WHERE 200<ar AND ar<500 AND etelf = "HÚS" ORDER BY ar DESC, keszido DESC; (1 db-ot nem lehet sorrendbe rakni)
  81.  
  82. /* 15. SZAKACS táblából az összes szakács adatait, születési idő szerint csökkenő sorrendben: */
  83.  
  84. SELECT * FROM szakacs ORDER BY szev DESC;
  85.  
  86. /* 16. Az összes szakács adatait fokozat szerinti, azon belül pedig születési év szerint csökkenő rendezettségben: */
  87.  
  88. SELECT * FROM szakacs ORDER BY fokozat DESC, szev DESC;
  89.  
  90. /* 17. a SZAKACS táblából a különböző fokozatokat: */
  91.  
  92. SELECT fokozat FROM szakacs GROUP BY fokozat;
  93.  
  94. /* 18. SZAKACS táblából a MESTER fokoozatú szakácsok nevét és születési évét, névsor szerinti sorrendben: */
  95.  
  96. SELECT snev, szev FROM szakacs WHERE fokozat = "MESTER" ORDER BY snev ASC;
  97.  
  98. /* 19. SZAKACS táblából az 1960 előtt született szakácsok nevét és fokozatát, fokozat, azon belül pedig névsor szerinti sorrendben: */
  99.  
  100. SELECT snev, fokozat FROM szakacs WHERE szev<1960 ORDER BY fokozat ASC, snev ASC;
  101.  
  102. /* 20. a június 21-i étrendet az ETREND táblából: */
  103.  
  104. SELECT etrend.etszam AS "étkezések száma", etel.enev AS ételnév FROM etrend INNER JOIN etel ON etrend.ekod = etel.ekod WHERE ho=6 AND nap=21;
  105.  
  106. /* 21. ETREND táblából a főétkezések (étkezés száma: 3) adatait hónap, nap szerinti rendezettségben: */
  107.  
  108. SELECT * FROM etrend WHERE etszam=3 ORDER BY ho ASC, nap ASC;
  109.  
  110. /* 22. ETREND táblából a február 1-jei 5. étkezésre készített étel kódját: */
  111.  
  112. SELECT ekod FROM etrend WHERE etszam=5 AND ho=2 AND nap=1;
  113.  
  114. /* 23. a B betűvel kezdődő nevű ételek adatait: */
  115.  
  116. SELECT * FROM etel WHERE enev LIKE 'B%';
  117.  
  118. /* 24. azoknak az ételeknek a nevét és árát, melyek nevének 2. betűje O: */
  119.  
  120. SELECT enev, ar FROM etel WHERE enev LIKE '_O%'; (nincs ilyen)
  121.  
  122. /* 25. azoknak a szakácsoknak a nevét és fokozatát, akiknek a neve K betűvel kezdődik, 3. betűje R: */
  123.  
  124. SELECT snev, fokozat FROM szakacs WHERE snev LIKE 'K_R%';
  125.  
  126. /* 26. a legdrágább étel ára: */
  127.  
  128. SELECT MAX(ar) AS MAXár FROM etel;
  129.  
  130. /* 27. a legidősebb szakács születési éve: */
  131.  
  132. SELECT MIN(szev) AS "születési év" FROM szakacs;
  133.  
  134. /* 28. a legtáplálóbb étel tápértéke: */
  135.  
  136. SELECT MAX(kaloria) AS maxtápérték FROM etel;
  137.  
  138. /* 29. a legolcsóbb étel ára: */
  139.  
  140. SELECT MIN(ar) AS "legkisebb ár" FROM etel;
  141.  
  142. /* 30. a legdrágább és a legolcsóbb étel árának különbsége: */
  143.  
  144. SELECT MAX(ar)-MIN(ar) AS "különbség" FROM etel;
  145.  
  146. /* 31. a legidősebb és legfiatalabb szakács korkülönbsége: */
  147.  
  148. SELECT MAX(szev)-MIN(szev) AS "korkülönbség" FROM szakacs;
  149.  
  150. /* 32. az ételek száma: */
  151.  
  152. SELECT COUNT(ekod) AS "ételek száma" FROM etel;
  153.  
  154. /* 33. a HÚS fajtájú ételek száma: */
  155.  
  156. SELECT COUNT(ekod) AS "húsételek" FROM etel WHERE etelf = "HÚS";
  157.  
  158. /* 34. a KUKTA fokozatú szakácsok száma: */
  159.  
  160. SELECT COUNT(skod) AS "kukták" FROM szakacs WHERE fokozat = "KUKTA";
  161.  
  162. /* 35. a március 15-i étkezések száma: */
  163.  
  164. SELECT COUNT(ekod) AS "étkezések száma" FROM etrend WHERE ho=3 AND nap=15;
  165.  
  166. /* 36. a 20345 kódú étel hányszor szerepel az étrendben: */
  167.  
  168. SELECT COUNT(ekod) AS "20345-ös" FROM etrend WHERE ekod = 20345;
  169.  
  170. /* 37. az ÉDESSÉG ételek átlagos tápértéke: */
  171.  
  172. SELECT avg(kaloria) AS "átlagos tápérték" FROM etel WHERE etelf = "ÉDESSÉG";
  173.  
  174. /* 38. a GYÜMÖLCS ételek árának összege: */
  175.  
  176. SELECT SUM(ar) AS "gyümölcsök összára" FROM etel WHERE etelf = "GYÜMÖLCS";
  177.  
  178. /* 39. a 200 kcal-nál kevesebb tápértékű ételek átlagára: */
  179.  
  180. SELECT avg(ar) AS "átlagár" FROM etel WHERE kaloria<200;
  181.  
  182. /* 40. az 1 óránál tovább készülő ételek száma: */
  183.  
  184. SELECT COUNT(ekod) AS "1órás" FROM etel WHERE keszido>60;
  185.  
  186. /* 41. a 80 Ftnál olcsóbb LEVES ételek elkészítési idejének összege: */
  187.  
  188. SELECT SUM(keszido) AS "összes elkészítési idő" FROM etel WHERE ar<80 AND etelf = "LEVES"; (nincs ilyen)
  189.  
  190. /* 42. a legolcsóbb ÉDESSÉG ára: */
  191.  
  192. SELECT MIN(ar) AS "édesség minár" FROM etel WHERE etelf = "ÉDESSÉG";
  193.  
  194. /* 43. a legidősebb KUKTA születési éve: */
  195.  
  196. SELECT MIN(szev) AS "kukta születési év" FROM szakacs WHERE fokozat = "KUKTA";
  197.  
  198. /* 44. a 200 és 300 kcal közötti tápértékű ételek közül a legdrágább ára: */
  199.  
  200. SELECT MAX(ar) AS "maxár" FROM etel WHERE kaloria>200 AND kaloria<300;
  201.  
  202. /* 45. a legfiatalabb szakács neve és születési éve: */
  203.  
  204. SELECT snev AS név, szev AS dátum FROM szakacs WHERE szev = (SELECT MAX(szev) FROM szakacs);
  205.  
  206. /* 46. a legolcsóbb étel ára és neve: */
  207.  
  208. SELECT ar AS ár, enev AS név FROM etel WHERE ar = (SELECT MIN(ar) FROM etel);
  209.  
  210. /* 47. az átlagosnál olcsóbb ételek neve és fajtája: */
  211.  
  212. SELECT enev AS név, etelf AS fajta FROM etel WHERE ar< (SELECT avg(ar) FROM etel);
  213.  
  214. /* 48. az átlagosnál idősebb szakácsok neve, születési éve és fokozata születési év szerint csökkenő sorredben: */
  215.  
  216. SELECT snev AS név, szev AS dátum, fokozat FROM szakacs WHERE (SELECT YEAR(NOW()))-szev > (SELECT avg((SELECT YEAR(NOW()))-szev) FROM szakacs) ORDER BY szev DESC;
  217.  
  218. /* 49. fokozatonként a legidősebb szakács születési éve: */
  219.  
  220. SELECT MIN(szev) AS dátum, fokozat FROM szakacs GROUP BY fokozat;
  221.  
  222. /* 50. ételfajtánként az ételek átlagára: */
  223.  
  224. SELECT avg(ar) AS átlagár, etelf AS fajta FROM etel GROUP BY etelf;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement