t-sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
t-sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
10 Ocak 2019 Perşembe
SQL Server da Window Fonksiyonların Kullanımı
SQL Server da daha hızlı ve anlaşılır hesaplama yapmak için window function ların nasıl kullanıldığına dair yazıma buraya tıklayarak ulaşabilirsiniz.
Etiketler:
over,
sql,
t-sql,
window function
16 Nisan 2010 Cuma
T-SQL ile Fibonacci Serisi
İşte Fibonacci Serisinin ilk 30 sayısını getiren kod. @CountOfNumbers'ı değiştirerek daha fazla sayıya da ulaşabilirsiniz. Tabii ki, bigint veri tipinin izin verdiği aralık içinde kalıyorsa.
DECLARE @CountOfNumbers int = 30
DECLARE @Fibonacci TABLE(OrderNo int, FibonacciNumber bigint)
INSERT INTO @Fibonacci(OrderNo,FibonacciNumber)
VALUES
(1,0), -- 1. sayı = 0
(2,1) -- 2. sayı = 1
DECLARE @i int = 3, -- 3 den başlatalım, 1. ve 2. yi sayıları tabloya ekledi
@F1 bigint = 0,
@F2 bigint = 1,
@F bigint
WHILE @i<=@CountOfNumbers BEGIN
SET @F = @F1 + @F2
INSERT INTO @Fibonacci(OrderNo,FibonacciNumber) VALUES(@i,@F)
SET @F1 = @F2
SET @F2 = @F
SET @i+=1
END
SELECT * FROM @Fibonacci
Bir Tablodan Rastgele 5 Kayıt Getirmek
-- Önce test etmek için geçici bir tablo tanımlayalım.
DECLARE @Dummy TABLE(ID int identity(1,1),Number int)
-- Bu tabloya 100 tane kayıt atalım.
-- SQL Server 2008 de değişkeni tanımlarken başlangıç değeri de verebilirsiniz. SQL Server 2008 öncesinde tanımlamayı ve başlangıç değeri vermeyi ayrı satırlarda yapmalısınız.
DECLARE @i int = 1
WHILE @i<=100 BEGIN
INSERT INTO @Dummy(Number) VALUES(@i*@i)
SELECT @i+=1 -- Bu da SQL Server 2008 e ait bir özellik. SELECT @i=@i+1 ifadesine karşılık gelir.
END
-- Dataları çekeceğimiz tablomuzu oluşturduk. Bakalım nasıl kayıtlar var.
SELECT * FROM @Dummy
ID Number
1 1
2 4
3 9
4 16
5 25
6 36
.. ..
99 9801
100 10000
Şimdi bu tablodan rastgele 5 tanesini seçelim.
SELECT TOP 5 *
FROM @Dummy
ORDER BY NewID()
ID Number
99 9801
25 625
65 4225
51 2601
15 225
NewID fonksiyonu uniqueidentifier tipinde bir veri oluşturur ve her çektiğinizde de farklı bir değer oluşturur. Her seferinde farklı değerler üreten bu fonksiyonu ORDER BY a ekledim, böylece bizim tablomuzun kayıt yaratılma sırasına göre değil, anlık üretilen NewID ye göre sıralayacak kayıtları. "TOP 5" ifadesi de ilk 5 kaydın gelmesini sağlayacak.
DECLARE @Guid uniqueidentifier = NewID()
SELECT @Guid as Guid
Guid
7facc454-b048-4e44-8d72-b7a9b97fb370
Akla hemen neden random sayı üreten RAND() fonksiyonunu kullanmadık diye bir soru da gelebilir.
RAND() fonksiyonu bir transaction içinde aynı sayıyı üretir.
SELECT RAND() as Random, * FROM @Dummy
kodunu çalıştırırsak Random kolonunda hep aynı sayının geldiğini görebilirsiniz.