Advertisement
18126

Untitled

Apr 10th, 2025
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.97 KB | None | 0 0
  1. CREATE DATABASE _93aa_ksig;
  2. USE _93aa_ksig;
  3. CREATE TABLE students(
  4. id INT AUTO_INCREMENT PRIMARY KEY,
  5. name VARCHAR(50) NOT NULL,
  6. address VARCHAR(50) NOT NULL,
  7. egn VARCHAR (10) NOT NULL UNIQUE,
  8. phone VARCHAR(10) NULL DEFAULT NULL,
  9. class VARCHAR(5) NULL DEFAULT NULL
  10. );
  11. INSERT INTO students(name, egn, address, phone, class)
  12. VALUES
  13. ('Ilyan Ivanov', '9401150045', 'Sofia-Mladost', '0895345123', '10'),
  14. ('Ivan Iliev', '9510104512', 'Sofia-Lulin', '0896786453', '11'),
  15. ('Elena Petrovs', '9505052154', 'Sofia-Mladost2', '0899123456', '11'),
  16. ('Ivan Iliev', '9510104542', 'Sofia-Mladost3', '0897123456', '11'),
  17. ('Maria Dimova', '9510104547', 'Sofia-Mladost4', '088898654', '11'),
  18. ('Antoaneta Ivanova', '9411104547', 'Sofia-Krasno selo', '0877123456', '10');
  19.  
  20. CREATE TABLE sports(
  21. id INT AUTO_INCREMENT PRIMARY KEY,
  22. name VARCHAR(50) NOT NULL
  23. );
  24. INSERT INTO sports
  25. VALUES
  26. (NULL, 'football'),
  27. (NULL, 'voleyball');
  28.  
  29. CREATE  TABLE coaches(
  30. id INT AUTO_INCREMENT PRIMARY KEY,
  31. name VARCHAR(50) NOT NULL,
  32. egn VARCHAR (10) NOT NULL UNIQUE
  33. );
  34. INSERT INTO coaches(name, egn)
  35. VALUES
  36. ('Ivan Petrov', '75090412'),
  37. ('Petyr Dimitrov', '2345678901'),
  38. ('Kaloyan Kolev', '3456789012');
  39.  
  40. CREATE TABLE sportGroups(
  41. id INT AUTO_INCREMENT PRIMARY KEY,
  42. location VARCHAR(50) NOT NULL,
  43. dayOfWeek ENUM('Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun'),
  44. hourOfTraining TIME NOT NULL,
  45. sport_id INT NOT NULL,
  46. CONSTRAINT FOREIGN KEY (sport_id) REFERENCES sports(id),
  47. coach_id INT NOT NULL,
  48. CONSTRAINT FOREIGN KEY(coach_id) REFERENCES coaches(id),
  49. UNIQUE KEY (location, dayOfWeek,  hourOfTraining)
  50. );
  51. INSERT INTO sportGroups(location, dayOfWeek, hourOfTraining, sport_id, coach_id)
  52. VALUES
  53. ('Sofia-Mladost1', 'Mon', '8:00:00', 1, 1),
  54. ('Sofia-Mladost1', 'Mon', '9:00:00', 1, 2),
  55. ('Sofia-Lulin', 'Sun', '8:00:00', 2, 3),
  56. ('Sofia-Lulin', 'Sun', '9:30:00', 2, 2),
  57. ('Plovdiv', 'Mon', '12:00:00', 1, 1);
  58.  
  59. CREATE TABLE sportgr_student(
  60. student_id INT NOT NULL,
  61. CONSTRAINT FOREIGN KEY (student_id) REFERENCES students(id),
  62. sportgr_id INT NOT NULL,
  63. CONSTRAINT FOREIGN KEY (sportgr_id) REFERENCES sportgroups(id),
  64. PRIMARY KEY (student_id, sportgr_id)
  65. );
  66. INSERT INTO sportgr_student
  67. VALUES
  68. (1,1),
  69. (2,1),
  70. (3,2),
  71. (4,2),
  72. (5,1),
  73. (6,2);
  74.  
  75. CREATE TABLE programmers(
  76. id INT AUTO_INCREMENT PRIMARY KEY,
  77.     name VARCHAR(255) NOT NULL,
  78.     address VARCHAR(255) NOT NULL,
  79.     startWorkingDate DATE,/**YYYY-MM-DD**/
  80.     teamLead_id INT NULL DEFAULT NULL,
  81.     CONSTRAINT FOREIGN KEY (teamLead_id) REFERENCES programmers(id)
  82. );
  83.  
  84. INSERT INTO programmers (name, address, startWorkingDate, teamLead_id)
  85. VALUES
  86. ('Ivan Ivanov', 'Sofia', '1999-05-25', NULL),
  87. ('Georgi Petkov Todorov', 'Bulgaria - Sofia Nadezhda, bl. 35', '2002-12-01', 1),
  88. ('Todor Petkov', 'Sofia - Liylin 7', '2009-11-01', 1),
  89. ('Sofiq Dimitrova Petrova', 'Sofia - Mladost 4, bl. 7', '2010-01-01', 1),
  90. ('Teodor Ivanov Stoyanov', 'Sofia - Obelya, bl. 48', '2011-10-01', NULL),
  91. ('Iliya Stoynov Todorov', 'Sofia Nadezhda, bl. 28', '2000-02-01', 5),
  92. ('Mariela Dimitrova Yordanova', 'Sofia - Knyajevo, bl. 17', '2005-05-01', 5),
  93. ('Elena Miroslavova Georgieva', 'Sofia - Krasno Selo, bl. 27', '2008-04-01', 5),
  94. ('Teodor Milanov Milanov', 'Sofia - Lozenetz', '2012-04-01', 5);
  95.  
  96. SELECT progr.name as ProgramerName, progr.address as ProgramerAddress, teamLeads.name as TeamLeadName
  97. FROM programmers as progr JOIN programmers as teamLeads
  98. WHERE progr.teamLead_id = teamLeads.id;
  99.  
  100. SELECT sportGroups.location,
  101. sportGroups.dayOfWeek,
  102. sportGroups.hourOfTraining,
  103. sports.name
  104. from sportGroups inner join sports
  105. on sportGroups.sport_id = sports.id;
  106.  
  107. SELECT coaches.name, sports.name
  108. FROM coaches JOIN sports
  109. on coaches.id IN(
  110. SELECT coach_id
  111. from sportGroups
  112. WHERE sportGroups.sport_id = sports.id
  113. );
  114.  
  115. SELECT distinct coaches.name, sports.name
  116. from coaches JOIN sportGroups
  117. on coach_id = sportGroups.coach_id
  118. JOIN sports
  119. on sportGroups.sport_id = sports.id;
  120.  
  121.  
  122.  delimiter |
  123.  create procedure getAllSportGroupsWithSports()
  124.  begin
  125.  select sg.location as locationOfGroup,
  126.  sg.DayOfWeek as trainigDay,
  127.  sg.hourOfTraining as trainingHour,
  128.  sp.name as sportName
  129.  from sportgroups as sg join sports as sp
  130.  on sg.sport_id = sp.id;
  131.  end
  132.  |
  133.  delimiter ;
  134.  
  135.  call getAllSportGroupsWithSports();
  136. delimiter |
  137. create procedure proc_in (in var varchar(50))
  138. begin
  139. set @coach_name = var;
  140. end;
  141. |
  142. delimiter ;
  143. call proc_in ('Ivan Petrov');
  144. select * from coaches
  145. where name = @coach_name;
  146.  
  147.  DELIMITER $$
  148. CREATE procedure checkMonthTax(IN studId INT, IN groupId INT, IN paymentMonth INT, IN paymentYear INT)
  149. BEGIN
  150. DECLARE result char(1);
  151. SET result = 0;
  152.     IF( (SELECT paymentAmount
  153.         FROM taxespayment
  154.         WHERE student_id = studId
  155.         AND group_id = groupId
  156.         AND month = paymentMonth
  157.         AND year = paymentYear) IS NOT NULL)
  158.     THEN
  159.         SET result = 1;
  160.     ELSE
  161.         SET result = 0;
  162.     END IF;
  163. SELECT result AS IsTaxPayed;
  164. END$$;
  165. DELIMITER ;
  166. CALL checkMonthTax(1,1,1,2023);
  167.  
  168. DELIMITER $$
  169. CREATE PROCEDURE getPaymentPeriod(IN studId INT, IN groupId INT, IN paymentYear INT)
  170. BEGIN
  171. DECLARE countOfMonths int;
  172. DECLARE monthStr VARCHAR(10);
  173. DECLARE yearStr VARCHAR(10);
  174. SET monthStr = 'MONTH';
  175. SET yearStr = 'YEAR';
  176.     SELECT COUNT(*)
  177.     INTO countOfMonths
  178.     FROM taxespayment
  179.     WHERE student_id = studId
  180.     AND group_id = groupId
  181.     AND year = paymentYear;
  182.    
  183. CASE countOfMonths
  184.     WHEN 0 THEN SELECT 'This student has not paid for this group/year!' as PAYMENT_PERIOD;
  185.     WHEN 1 THEN SELECT CONCAT('ONE_',monthStr) as PAYMENT_PERIOD;
  186.     WHEN 3 THEN SELECT CONCAT('THREE_',monthStr,'S') as PAYMENT_PERIOD;
  187.     WHEN 6 THEN SELECT CONCAT('SIX_',monthStr,'S') as PAYMENT_PERIOD;
  188.     WHEN 12 THEN SELECT yearStr as PAYMENT_PERIOD;
  189.     ELSE
  190.             SELECT CONCAT(countOfMonths, monthStr, 'S') as PAYMENT_PERIOD;
  191.         END CASE;
  192. END$$;
  193. DELIMITER ;
  194. CALL getPaymentPeriod(4,2,2022);
  195.  
  196.  
  197. DROP PROCEDURE IF EXISTS getAllPaymentsAmount;
  198. DELIMITER |
  199. CREATE PROCEDURE getAllPaymentsAmount(
  200.     IN firstMonth INT,
  201.     IN secMonth INT,
  202.     IN paymentYear INT,
  203.     IN studId INT
  204. )
  205. BEGIN
  206.     DECLARE totalAmount DECIMAL(10,2) DEFAULT 0;
  207.     DECLARE monthCount INT;
  208.  
  209.     IF(firstMonth > secMonth) THEN
  210.         SELECT 'Please enter correct months!' AS RESULT;
  211.     ELSEIF((SELECT COUNT(*) FROM taxesPayment WHERE student_id = studId) = 0) THEN
  212.         SELECT 'Please enter correct student_id!' AS RESULT;
  213.     ELSE
  214.        
  215.         SET monthCount = secMonth - firstMonth + 1;
  216.  
  217.    
  218.         SELECT IFNULL(SUM(paymentAmount), 0) INTO totalAmount
  219.         FROM taxesPayment
  220.         WHERE student_id = studId AND year = paymentYear AND month BETWEEN firstMonth AND secMonth;
  221.  
  222.        
  223.         SELECT
  224.             student_id,
  225.             group_id,
  226.             paymentAmount,
  227.             month,
  228.             monthCount AS months_in_period,
  229.             totalAmount AS total_paid
  230.         FROM taxesPayment
  231.         WHERE student_id = studId AND year = paymentYear AND month BETWEEN firstMonth AND secMonth;
  232.     END IF;
  233. END;
  234. |
  235. DELIMITER ;
  236.  
  237. CALL getAllPaymentsAmount(1,6,2021,1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement