19 Mayıs 2014 Pazartesi

GROUPING Fonksiyonu

  • SQL Server'da Fonksiyonlar, hesaplamalarda ve özellikle sistem hakkında bilgi almada yaygın olarak kullanılan araçlardır. Transact-SQL (T-SQL) programlama dilinde değişik kategorilerle adlandırılan fonksiyonlar vardır. Bunlardan en yaygını veriler üzerinde işlem yapan toplama ya da gruplama olarak adlandırabileceğimiz aggregate fonksiyonlarıdır. 
  • GROUPING Aggregate (Gruplama) Fonksiyonudur.
  • GROUP BY ile kullanılan ROLLUP ve CUBE ile elde edilen sonuç listesini GROUPING fonksiyonu daha kolay değerlendirip yorumlamamızı sağlar. 
  • Sütunlarda özet bilgiler için 1, detay bilgiler için 0 değeri görüntülenir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu :
SELECT OrderID, GROUPING(OrderID), ProductID,GROUPING(ProductID), SUM(quantity) AS 'Toplam Sipariş'
FROM [order details] WHERE OrderID < 10250
GROUP BY OrderID, ProductID WITH CUBE ORDER BY OrderID, ProductID


Sorgumuzda sütunlara dikkat edelim. OrderID alanı NULL olarak görünen kayıtlar tüm siparişlerdeki ürünlerin toplamlarını göstermektedir.

18 Mayıs 2014 Pazar

Java 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.
import java.util.Scanner;
public class SWITCHCASE {
private static Scanner giris;
public static void main (String Arg[])
{
 
    gidilecekYer: do {
 //---------------------
 int s,f=1;
 int u=1;
 int x,m;
 
 Scanner giris = new Scanner(System.in);
 System.out.println("islem yapilacak sayiyi giriniz:");
 s=giris.nextInt();
 
 System.out.println("\n\n(f) Faktoriyel Hesapla");
 System.out.println("(i) Girilen Sayi Kadar Isim Yaz");
 System.out.println("(t) Sayiya kadar kac adet tek sayi var");
 System.out.println("(y) Sayiya kadar kac adet cift sayi var");
 String a=giris.next();
 char z = a.charAt(0);
 
 switch (z) {
  case 'f':
   do
   {
   f=f*s;
   s--;
   }
   while (s!=1); //sayi 1 e esit degilse dön. yani do calissin.
   System.out.println("Faktoriyel Sonuc:"+f); 
   
 break;
  case 'i':
   m=1;
   while (m<s+1)
   {
    System.out.println("BAYRAKTAR\n");
    m++;
   }
 break;
  case 't':
   for(m=0;m<s+1;m++)
   {
    if(m%2==1)
    {
     System.out.println("tek sayi: "+m);
    }
   }
   break;
  case 'y':
   x=1;
   for(m=0;m<s+1;m++)
   {
    if(m%2==0)
    {
     System.out.println(x+".cift sayi: "+m);
     x++;
    }
   }
   break;
   
  default: System.out.println("Hatali Deger Girdin."); break;
    
 }
 //--------------
 System.out.println("Devam Etmek istiyor musunuz ? (e/h)");
 String x1=giris.next();
 char x2 = x1.charAt(0);
 
 if(x2=='e')
 {
  continue gidilecekYer; 
 }
 else
 {
 break;
 }
  } while(true);
 
}}

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.)




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