Advertisement
Guest User

help3

a guest
Mar 23rd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.43 KB | None | 0 0
  1. ALTER PROCEDURE lol(@rok_od int ,@rok_do int)
  2. as
  3. begin
  4. declare @rok int
  5. declare @den varchar(10)
  6. declare @sum int
  7.  
  8. declare list cursor for
  9. select * from
  10.     (SELECT  DATENAME(YEAR,n.den) as rok, DATENAME(WEEKDAY,n.den) as den,sum(n.cena) as suma  from test.Nakup n
  11.     WHERE DATENAME(YEAR,n.den) BETWEEN @rok_od And @rok_do
  12.     group by DATENAME(YEAR,n.den),DATENAME(WEEKDAY,n.den)) as roky_sum
  13. where suma IN(
  14. SELECT MAX(suma) from
  15. (SELECT  DATENAME(YEAR,n.den) as rok, DATENAME(WEEKDAY,n.den) as den,sum(n.cena) as suma  from test.Nakup n
  16.     WHERE DATENAME(YEAR,n.den) BETWEEN @rok_od And @rok_do
  17.     group by DATENAME(YEAR,n.den),DATENAME(WEEKDAY,n.den)) as roky_sum
  18.     group by rok
  19. )
  20. order by rok
  21.  
  22. fetch next from list into @rok,@den,@sum
  23. WHILE @@FETCH_STATUS=0
  24. BEGIN
  25.     print cast (@rok as char(4))+ ': '+ cast(@den as char(10))+' '+cast(@sum as char(10))
  26.     FETCH NEXT FROM list into @rok,@den,@sum
  27. END
  28. CLOSE LIST
  29. DEALLOCATE LIST
  30. END
  31.  
  32. execute lol 2012,2014
  33.  
  34.  
  35.  
  36.  
  37. ALTER PROCEDURE lol2(@name varchar(30),@date_od int,@date_do int)
  38. as
  39. BEGIN
  40.  
  41.     DECLARE @day varchar(10)
  42.     DECLARE @sum int
  43.     DECLARE list CURSOR FOR
  44.     SELECT* FROM
  45.     (
  46.     select Y,SUM(case when suma>0 then suma else 0 end) as suma from
  47.     (
  48.     select Y,suma from
  49.     (
  50.         SELECT DISTINCT DATENAME(weekday,nn.den) AS Y FROM test.Nakup nn
  51.     ) as y
  52.         LEFT JOIN (SELECT DATENAME(YEAR,n.den) as rok,DATENAME(WEEKDAY,n.den) as den ,sum(n.cena)  as suma
  53.         FROM test.Nakup n join test.Zakaznik z on z.zID=n.zID
  54.         WHERE z.jmeno = @name and DATENAME(YEAR,n.den) between @date_od and @date_do
  55.         group by DATENAME(year,n.den),datename(weekday,n.den)) o on o.den=y.Y
  56.     )t
  57. group by Y
  58. )K
  59. ORDER BY CASE WHEN Y='Monday' THEN 1
  60.                 WHEN Y='Tuesday' THEN 2
  61.                 WHEN Y='Wednesday' THEN 3
  62.                 WHEN Y='Thursday' THEN 4
  63.                 WHEN Y='Friday' THEN 5
  64.                 WHEN Y='Saturday' THEN 6
  65.                 WHEN Y='Sunday' THEN 7
  66.             END
  67.  
  68. OPEN LIST
  69. FETCH NEXT FROM list into @day,@sum
  70. WHILE @@FETCH_STATUS=0
  71. begin  
  72.     print @day+': '+cast(@sum as varchar(10))
  73.     FETCH NEXT from list into @day,@sum
  74. end
  75. close list
  76. deallocate list
  77. END
  78.  
  79. execute lol2 'pepik',2012,2014
  80.  
  81. select sum(n.cena) from test.nakup n join test.zakaznik z on z.zID=n.zID
  82. --where z.jmeno='pepik'
  83. where DATENAME(weekday,n.den)='friday'
  84.  
  85.  
  86.  
  87.  
  88. ALTER PROCEDURE lol3(@rok_od int, @rok_do int)
  89. as
  90. begin
  91.     DECLARE @cena int
  92.     DECLARE @pohlavi varchar(4)
  93.     DECLARE @rok_max int
  94.     DECLARE @rok_min int
  95.  
  96.     set @rok_max= (SELECT MAX(DATENAME(YEAR,nn.den)) from test.nakup nn)+1
  97.     set @rok_min= (SELECT MIN(DATENAME(YEAR,nn.den)) from test.nakup nn)-1
  98.    
  99.     if @rok_do=-1 set @rok_do=@rok_max
  100.     if @rok_od=-1 set @rok_od=@rok_min
  101.    
  102.     DECLARE list CURSOR FOR
  103.     SELECT * FROM
  104.         (SELECT sum(n.cena) as cena,z.pohlavi FROM test.Nakup n
  105.         join test.Zakaznik z on z.zID=n.zID
  106.         WHERE DATENAME(YEAR,n.den) between @rok_od and @rok_do
  107.         group by pohlavi
  108.         )x
  109.    
  110.     OPEN list
  111.     FETCH NEXT FROM list INTO @cena, @pohlavi
  112.     WHILE @@FETCH_STATUS =0
  113.     begin
  114.         if @rok_do=@rok_max AND @rok_od=@rok_min
  115.         begin
  116.             if  @pohlavi='zena'
  117.                 begin
  118.                      print 'zeny '+'nakoupily za: '+cast(@cena as varchar (10))
  119.                 end
  120.                 if @pohlavi='muz'
  121.                 begin
  122.                      print 'muzi '+'nakoupili za: '+cast(@cena as varchar(10))
  123.                 end
  124.         end
  125.  
  126.         if @rok_do =@rok_max AND @rok_od !=@rok_min
  127.         begin
  128.             if  @pohlavi='zena'
  129.             begin
  130.                  print 'zeny od roku '+cast (@rok_od as varchar(4))
  131.                  +' nakoupily za: '+cast(@cena as varchar (10))
  132.             end
  133.             if @pohlavi='muz'
  134.             begin
  135.                  print 'muzi od roku '++cast (@rok_od as varchar(4))
  136.                  +' nakoupili za: '+cast(@cena as varchar(10))
  137.             end
  138.         end
  139.  
  140.         if @rok_od=@rok_min AND @rok_do !=@rok_max
  141.         begin
  142.             if  @pohlavi='zena'
  143.             begin
  144.                  print 'zeny do roku '+cast (@rok_do as varchar(4))
  145.                  +' nakoupily za: '+cast(@cena as varchar (10))
  146.             end
  147.             if @pohlavi='muz'
  148.             begin
  149.                  print 'muzi do roku '++cast (@rok_do as varchar(4))
  150.                  +' nakoupili za: '+cast(@cena as varchar(10))
  151.             end
  152.         end
  153.  
  154.         if @rok_od!=@rok_min AND @rok_do !=@rok_max
  155.         begin
  156.             if @pohlavi='zena'
  157.             begin
  158.                  print 'zeny mezi roky '+cast (@rok_od as varchar(4))+' a '+cast(@rok_do as varchar(4))
  159.                  +' nakoupily za: '+cast(@cena as varchar (10))
  160.             end
  161.             if @pohlavi='muz'
  162.             begin
  163.                 print 'muzi mezi roky '++cast (@rok_od as varchar(4))+' a '+cast(@rok_do as varchar(4))
  164.                 +' nakoupili za: '+cast(@cena as varchar(10))
  165.             end
  166.         end
  167.            
  168.         FETCH NEXT FROM list into @cena,@pohlavi
  169.     end
  170. close list
  171. deallocate list
  172. END
  173.  
  174. execute lol3 2012,2014
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement