UrunKodu   SatısTuru   Miktar    Birim Fiyat
001            ALIŞ         300           10
002           ALIŞ         100             7
001         SATIŞ         45             18
001         SATIŞ         34             25
001         SATIŞ         56              17
002        SATIŞ           10             12
002         SATIŞ          12             11

Alış veya satış bilgileri yandaki “UrunDurum” adlı tabloda verilmiştir. Aşağıda istenen SQL’leri oluşturun:
a) Kar-zarar durumunu
b) Ürünlere ait kar-zarar durumunu
c) En fazla kar yapılan ürün
d) En az kar yapılan ürün
e) Ürünler için kalan stok miktarlar

sorum biraz uzun oldu ama yardımcı olabilirseniz sevinirim.

soruldu: 02 Haz '12, 09:56

seyfullahugur's gravatar image

seyfullahugur
305610
cevap kabul oranı: 0%

değiştirildi: 02 Haz '12, 11:12

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


a)

select 
    sum(q.alis) toplam_alis , 
    sum(q.satis) toplam_satis , 
    sum(q.alis) - sum(q.satis) kar_zarar from 
    (
    select 
    a.urunkodu , 
    case when a.satisturu = 'ALIŞ' then a.birim_fiyat * miktar else 0 end Alis , 
    case when a.satisturu = 'SATIŞ' then a.birim_fiyat * miktar else 0 end Satis,
    a.miktar , 
    a.birim_fiyat from urundurum a
    ) q

b)

select q.urunkodu , sum((q.birim_fiyat * q.miktar)*hareket) kar_zarar from 
(select 
a.urunkodu , 
case when a.satisturu = 'ALIŞ' then -1 else 1 end hareket , 
a.miktar , 
a.birim_fiyat from urundurum a
) q
group by q.urunkodu

c)

select q.urunkodu , sum((q.birim_fiyat * q.miktar)*hareket) kar_zarar from 
    (select 
    a.urunkodu , 
    case when a.satisturu = 'ALIŞ' then -1 else 1 end hareket , 
    a.miktar , 
    a.birim_fiyat from urundurum a
    ) q
    group by q.urunkodu
    order by 2

d)

select q.urunkodu , sum((q.birim_fiyat * q.miktar)*hareket) kar_zarar from 
(select 
a.urunkodu , 
case when a.satisturu = 'ALIŞ' then -1 else 1 end hareket , 
a.miktar , 
a.birim_fiyat from urundurum a
) q
group by q.urunkodu
order by 2 desc

e)

select q.urunkodu , sum(q.giris) toplam_giris , sum(q.cikis) toplam_cikis
sum(q.giris) - sum(q.cikis) stokta_kalan
 from 
(
select a.urunkodu , 
case a.satisturu = 'ALIŞ' then a.miktar else 0 end GIRIS,
case a.satisturu = 'SATIŞ' then a.miktar else 0 end CIKIS,
from urundurum a
) Q
group by q.urunkodu
permanent link

cevaplandı: 02 Haz '12, 19:27

ersintarhan's gravatar image

ersintarhan
10813
cevap kabul oranı: 33%

değiştirildi: 02 Haz '12, 19:28

PL/SQL ile yapılması senin isteğini karşılar mı?

permanent link

cevaplandı: 02 Haz '12, 10:29

salgul's gravatar image

salgul
45121816
cevap kabul oranı: 0%

aslında bir şık da olsa cevaplayabilsek o zaman tamam olur hocam .

(02 Haz '12, 10:38) seyfullahugur seyfullahugur's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×144
×77

Soruldu: 02 Haz '12, 09:56

Görüntüleme: 3,547 kez

Son güncelleme: 04 Haz '12, 05:49

powered by BitNami OSQA