Zadatak 2

mail@pastecode.io avatar
unknown
python
a year ago
8.2 kB
4
Indexable
Never
import psycopg2
from config import config

class QueryData:

    def __init__(self):
        params = config()

        print('Connecting to the PostgreSQL database...')
        print()
        self.conn = psycopg2.connect(**params)
        
        # create a cursor
        self.cur = self.conn.cursor()

    def close(self):
        self.cur.close()
        self.conn.close()

    # Ukupan broj nekretnina koji se izdaje/prodaje
    def query_item_a(self, file):
        
        self.cur.execute("""
          SELECT COUNT(*), tipPonude FROM public.realestate
          GROUP By tipPonude
        """)

        item = self.cur.fetchall()

        file.write("Ukupan broj nekretnina koji se iznajmljuje/prodaje: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip ponude = " + str(row[1]) + ", " + "Num = " + str(row[0]) )
          file.write('\n')

        file.write('\n \n')

        return item
    
    # Ukupan broj nekretnina koje se prodaju po gradovima
    def query_item_b(self, file):
        
        self.cur.execute("""
          SELECT COUNT(*) as NumSell, grad FROM public.realestate
          WHERE tipPonude = 'prodaja'
          GROUP By grad
        """)

        item = self.cur.fetchall()

        file.write("Ukupan broj prodatih nekretnina po gradovima: ")
        file.write('\n')
        
        for row in item:
          file.write("Grad = " + row[1] + ", " + "Num = " + str(row[0]) )
          file.write('\n')

        file.write('\n \n')

        return item
    
    # Ukupan broj uknjizenih nekretnina po tipu
    # Ukupan broj nekretnina koje nisu uknjizene po tipu
    def query_item_c(self, file):
        
        self.cur.execute("""
          SELECT COUNT(*), tipNekretnine FROM public.realestate
          WHERE uknjizenost = 'uknjiženo '
          GROUP By tipNekretnine
        """)

        item = self.cur.fetchall()

        file.write("Ukupan broj uknjizenih nekretnina po tipu: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip nekretnine = " + row[1] + ", " + "Num = " + str(row[0]))
          file.write('\n')

        file.write('\n \n')

        self.cur.execute("""
          SELECT COUNT(*), tipNekretnine FROM public.realestate
          WHERE uknjizenost != 'uknjiženo '
          GROUP By tipNekretnine
        """)

        item = self.cur.fetchall()

        file.write("Ukupan broj nekretnina koje nisu uknjizene po tipu: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip nekretnine = " + row[1] + ", " + "Num = " + str(row[0]))
          file.write('\n')

        file.write('\n \n')

        return item
    
    # 30 najskupljih kuca koje se prodaju
    # 30 najskupljih stanova koji se prodaju
    def query_item_d(self, file):
        
        self.cur.execute("""
          SELECT cena, tipnekretnine, lokacija FROM public.realestate
          WHERE tipPonude = 'prodaja' AND tipNekretnine = 'kuca'
          ORDER BY cena DESC
          LIMIT 30
        """)

        item = self.cur.fetchall()

        file.write("30 najskupljih kuca: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip nekretnine = " + row[1] + ", " + "Cena = " + str(row[0]) + ", " + "Lokacija = " + row[2])
          file.write('\n')

        file.write('\n \n')

        self.cur.execute("""
          SELECT cena, tipnekretnine, lokacija FROM public.realestate
          WHERE tipPonude = 'prodaja' AND tipNekretnine = 'stan'
          ORDER BY cena DESC
          LIMIT 30
        """)

        item = self.cur.fetchall()

        file.write("30 najskupljih stanova: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip nekretnine = " + row[1] + ", " + "Cena = " + str(row[0])+ ", " + "Lokacija = " + row[2])
          file.write('\n')

        file.write('\n \n')

        return item
    
    # 100 najvecih kuca po povrsini
    # 100 najvecih stanova po povrsini
    def query_item_e(self, file):
        
        self.cur.execute("""
          SELECT kvadraturaNekretnine, tipNekretnine, lokacija FROM public.realestate
          WHERE tipNekretnine = 'kuca'
          ORDER BY kvadraturaNekretnine DESC NULLS LAST
          LIMIT 100
        """)

        item = self.cur.fetchall()

        file.write("100 najvecih kuca: ")
        file.write('\n')
        
        for row in item:
          if row[0] != None:
            file.write("Tip nekretnine = " + row[1] + ", " + "Kvadratura = " + str(row[0]) + ", " + "Lokacija = " + row[2])
            file.write('\n')
 
        file.write('\n \n')

        self.cur.execute("""
          SELECT kvadraturaNekretnine, tipNekretnine, lokacija FROM public.realestate
          WHERE tipNekretnine = 'stan'
          ORDER BY kvadraturaNekretnine DESC NULLS LAST
          LIMIT 100
        """)

        item = self.cur.fetchall()

        file.write("100 najvecih stanova: ")
        file.write('\n')
        
        for row in item:
          if row[0] != None:
            file.write("Tip nekretnine = " + row[1] + ", " + "Kvadratura = " + str(row[0]) + ", " + "Lokacija = " + row[2])
            file.write('\n')

        file.write('\n \n')

        return item
    
    # Nekretninte izgradjene u 2022 i 2023 godini
    def query_item_f(self, file):
        
        self.cur.execute("""
          SELECT cena, tipNekretnine, godinaIzgradnje, lokacija  FROM public.realestate
          WHERE godinaIzgradnje = 2022 OR godinaIzgradnje = 2023 
          ORDER BY cena DESC NULLS LAST
        """)

        item = self.cur.fetchall()

        file.write("Nekretninte izgradjene u 2022 i 2023 godini: ")
        file.write('\n')
        
        for row in item:
          file.write("Tip nekretnine = " + row[1] + ", " + "Cena = " + str(row[0]) + ", " + "Godina = " + str(row[2]) + ", " + "Lokacija = " + row[3])
          file.write('\n')

        file.write('\n \n')

        return item
    
    # TOP 30 nekretninta sa najvecim brojem soba
    # TOP 30 stanova sa najvecim kvadraturom
    # TOP 30 kuca sa najvecim povrsinom
    def query_item_g(self, file):
        
        self.cur.execute("""
          SELECT brojsoba, tipNekretnine, lokacija FROM public.realestate
          ORDER BY brojsoba DESC NULLS LAST
          LIMIT 30
        """)

        item = self.cur.fetchall()

        file.write("TOP 30 stanova sa najvecim brojem soba : ")
        file.write('\n')
        
        for row in item:
          if row[0] != None:
            file.write("Tip nekretnine = " + row[1] + ", " + "Broj soba = " + str(row[0]) + ", " + "Lokacija = " + row[2])
            file.write('\n')

        file.write('\n \n')

        self.cur.execute("""
          SELECT kvadraturaNekretnine, tipNekretnine, lokacija FROM public.realestate
          WHERE tipNekretnine = 'stan'
          ORDER BY kvadraturaNekretnine DESC NULLS LAST
          LIMIT 30
        """)

        item = self.cur.fetchall()

        file.write("TOP 30 kuca sa najvecom kvadraturom : ")
        file.write('\n')
        
        for row in item:
          if row[0] != None:
            file.write("Tip nekretnine = " + row[1]+", " + "Kvadratura = " + str(row[0]) + "m2" + ", " + "Lokacija = " + row[2])
            file.write('\n')

        file.write('\n \n')

        self.cur.execute("""
          SELECT povrsinaZemljista, tipNekretnine, lokacija FROM public.realestate
          WHERE tipNekretnine = 'kuca'
          ORDER BY povrsinaZemljista DESC NULLS LAST
          LIMIT 30
        """)

        item = self.cur.fetchall()

        file.write("TOP 30 sa najvecom povrsinom zemljista : ")
        file.write('\n')
        
        for row in item:
          if row[0] != None:
            file.write("Tip nekretnine = " + row[1]+", " + "Povrsina zemljista = " + str(row[0]) + " " + "ara" + ", " + "Lokacija = " + row[2])
            file.write('\n')

        file.write('\n \n')

        return item
    
file = open("statistika.txt", "w")

query = QueryData()
query.query_item_a(file)
query.query_item_b(file)
query.query_item_c(file)
query.query_item_d(file)
query.query_item_e(file)
query.query_item_f(file)
query.query_item_g(file)

file.close()