18 Mayıs 2014 Pazar

C Programlama SWITCH CASE Örnek

Dışardan girilen bir sayi için;
f:faktöriyel hesabı yapan,
i:girilen sayı kadar isim yazan
t:girilen sayıya kadar kaç tane tek var
y:girilen sayıya kadar kaç tane cift var

İşlemlerini yapan yapan programı switch case ile yazınız.
Program sonunda; Devam etmek istiyormusun(E/H) sorusuyla başa dönmelidir.
Faktöriyel döngüsü do while; isim yazdırma döngüsü while ile yazılmalıdır.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
    gidilecekYer: ;
    system("cls");       
    int s;
    int f=1;
 int u=1;
 int x,m;
 char z;

    printf ("Islem Yapilacak Sayiyi Giriniz: ");
    scanf("%d",&s);
 printf("\n\n(f) Faktoriyel Hesapla"); 
 printf("\n(i) Girilen Sayi Kadar Isim Yaz");
 printf("\n(t) Sayiya kadar kac adet tek sayi var");
 printf("\n(y) Sayiya kadar kac adet cift sayi var\n\n"); 
 
 scanf("%s",&z);
    
      switch (z) {
  case 'f':
   do
   {
   f=f*s;
   s--;
   }
   while (s!=1); //sayi 1 e esit degilse dönecek. do calisacak.
   printf ("Faktoriyel Sonuc: %d",f);
   break;
    case 1:
   printf ("1e");
   break;
        case 'i':
   m=1;
   while (m<s+1)
   {
   printf ("BAYRAKTAR\n");
   m++;
   }
   break;
      
        case 't':
   for(m=0;m<s+1;m++)
   {
    if(m%2==1)
    {
   printf("tek sayi: %d",m);
    }
   }
   break;
   
  case 'y':
   x=1;
   for(m=0;m<s+1;m++)
   {
    if(m%2==0)
    {
   printf(x+".cift sayi: %d",+m);
   x++;
    }
   }
   break;   
   
            default: printf("Hatali Deger Girdin"); break;
} 
   
   char x2; 
   printf("\n\nDevam Etmek istiyor musunuz ? (e/h)\n");
   scanf("%s",&x2); 
   
 
   if(x2=='e')
   {
               goto gidilecekYer;
} 
}

SQL'de WITH ROLLUP ve WITH CUBE Kullanımları

  • GROUP BY ile bir toplama işlevi kullandığımızda her farklı değer için sadece sonuç satırı görüntülenir. Gruplandırdığımız değerlerin detaylarını farklı komutlar kullanarak görüntüleyebiliriz.
  • ROLLUP Grup değerlerini özetlemek için kullanılır.
  • CUBE GROUP BY ile belirtilen sütunların tüm olası eşleşmelerini özetler.
  • CUBE komutunun ROLLUP'dan farkı bütün sütünlarında null ile ara toplamlarını vermesidir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT ProductID AS 'Ürün ID', OrderID AS 'Sipariş ID', SUM(quantity) AS 'Toplam Sipariş'  FROM [order details]  WHERE OrderID < 10250
GROUP BY OrderID, ProductID WITH CUBE ORDER BY OrderID, ProductID
(Sipariş ID 10250’den küçük olan kayıtların ve ürünlerin detaylı toplamlarını listeleyelim.)

Örnek Sorgu 2: SELECT ProductID AS 'Ürün ID',OrderID AS 'Sipariş ID', SUM(quantity) AS 'Toplam Sipariş'  FROM [order details] WHERE OrderID < 10250
GROUP BY ProductID, OrderID WITH ROLLUP ORDER BY ProductID, OrderID
(Sipariş ID 10250’den küçük olan kayıtların ve ürünlerin detaylı toplamlarını listeleyelim.)


17 Mayıs 2014 Cumartesi

SQL'de HAVING Kullanımı

  • Toplam fonksiyonlarını kullanırken kısıt girilmesi gerektiğinde WHERE komutunu kullanamayız. HAVING, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır.
  • Görev ve işlev bakımından WHERE gibi çalışır fakat WHERE gruplama işlemlerinden önce, HAVING ise GROUP BY'dan sonra kullanılır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : SELECT ProductID, SUM(quantity) AS total_quantity FROM [order details] GROUP BY ProductID HAVING SUM(quantity) > 1300
(Toplam sipariş miktarı 1300 adetten fazla olan ürünkodlarını listeleyelim.)




SQL'de GROUP BY Kullanımı

  • GROUP BY ile belirtilen sütun yada sütunlardaki aynı değere sahip satırları tek bir satırda birleştirmeyi sağlarız.
  • DISTINCT anahtar kelimesi yanlızca benzersiz satırları listelemek için kullanılmaktadır.
  • GROUP BY genellikle toplam fonksiyonlarıyla (Aggregate Function) kullanılır. 
  • GROUP BY ile belirtilen sütunlar SELECT ifadesinde de yeralmalıdır.
  • GROUP BY sorgularında kullanılan en yaygın toplama işlevleri MIN, MAX, SUM ve COUNT'dır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : SELECT ProductID AS 'Ürün ID', SUM(quantity) AS 'Toplam Sipariş' FROM [order details] GROUP BY ProductID
(Sipariş detayları tablosundan productid alanına göre gruplandırarak ve her grubun toplam sipariş miktarını belirterek listeleyelim.)



SQL'de WITH TIES Kullanımı

  • WITH TIES, ORDER BY ile sıralanan sonuçlarda son kayıt ile aynı değerde olan kayıtların da listelenmesini sağlar. Bu durumda sonuç belirtilen n sayısından daha fazla olabilir.
  • WITH TIES sadece ORDER BY ile birlikte kullanılmaktadır.

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT TOP 3 OrderID, ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen 3 ürünü listeleyelim.)


TOP n ile çalıştırdığımız sorgularımızı eğer WITH TIES ile çalıştırırsak n den farklı sonuç listesi görebiliriz. Örnek Sorgu 1′de de görüldüğü gibi en çok satış yapılan ilk 3 ürünü sıraladık. Fakat sıradaki 6., 7. ürünler de 120′şer adet satıldıysa? Onlar listeye giremeyecek çünkü biz 3 satır görmek istediğimizi belirttik. Bu gibi durumlarda WITH TIES'e başvuruyoruz. Şimdi aynı sorguya WITH TIES uygulayalım ve sonuçları görelim.

Örnek Sorgu 2: SELECT TOP 3 WITH TIES OrderID, ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen 3 ürünü listeleyelim.)

 

WITH TIES kullanımında önemli nokta örnek sorgumuzdaki ilk 3 değeri listeledikten sonra en son satıra ait quantity değeri daha varsa onlarıda getirmesidir. İlk sorguda 3 sonuçtan sonuncusunda quantity değerinin 120 olduğunu görmekteyiz. WITH TIES kullanılan sorguda quantity değeri 120 olan bütün değerlerin getirilmesini sağladık. 

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü