sql Benzersiz kayıtları sayma

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

Kapalı bir dosyada 2. sütunda benzersiz değerleri saymak için aşağıdaki gibi sorguyu oluşturdum,
benzeresiz kayıt sayısının çıktısını almak için kodun sonucu bir türlü bağlayamadım?

Örnek: Tablomuzda 2. sütunda yer alan Urun_adi alanında; toplamda 4 tane kayıt olmasına rağmen "Çamaşır makinesi" iki defa olduğu için kodumuz bize sonuç olarak 3 değerini döndürmesi gerekiyor.

3 sonucu almak için kodun sonunu nasıl düzenlememiz gerekiyor?


Kod:
Set RS = New ADODB.Recordset

qry = "SELECT COUNT(DISTINCT F1) FROM [Data$]"

RS.Open qry, Con, 1, 3
teşekkürler,
iyi çalışmalar.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
C#:
    strSQL = " Select [Müşteri Ürün Adı], Count([Müşteri Ürün Adı]) As myCount From [Sheet1$] " & _
             " Group By [Müşteri Ürün Adı] Having Count([Müşteri Ürün Adı]) >= 1"
.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Kod:
sorgu = "select count(*) from(select distinct(f1) from[sayfa1$])"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
sorgu = "select count(*) from(select distinct(f1) from[sayfa1$])"
Hakuk & Erdem Hocam buraya kadar OK,
bunun bir fonksiyon olduğunu düşünelim sonucu nasıl alacağız?
netice olarak tek bir değer döndürecek.
Kod:
RS.Open sorgu, Con, 1, 3
dim a as integer
a=RS(0)
gibi...
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

b = rs(0)

olayından farklı olarak sayım sonucu nasıl alabiliriz?
başka bir yöntem var mıdır? Bunu araştıryorum.

teşekkürler,

Kod:
Sub distinctt()
Dim sorgu As String

Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

yol = ThisWorkbook.FullName

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

' ' sorgu1 = "select distinct [STOK ADI] FROM[sabit$]"

sorgu = "select count([STOK ADI]) from(select distinct([STOK ADI]) from [sabit$])"

rs.Open sorgu, con, 1, 3

a = rs.RecordCount

b = rs(0)

End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
C#:
sorgu = "select count([STOK ADI]) As stokCount from(select distinct([STOK ADI]) from [sabit$])"

rs.Open sorgu, con, 1, 3

a = rs.RecordCount

b = rs("stokCount")

MsgBox b
.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
C#:
sorgu = "select count([STOK ADI]) As stokCount from(select distinct([STOK ADI]) from [sabit$])"

rs.Open sorgu, con, 1, 3

a = rs.RecordCount

b = rs("stokCount")

MsgBox b
.
teşekkürler Haluk Hocam
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Set rs = con.Execute("select count(*) from(select distinct(f1) from[sayfa1$])")

MsgBox rs.Fields.Item(0).Value
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
C#:
sorgu = "select count([STOK ADI]) As stokCount from(select distinct([STOK ADI]) from [sabit$])"

rs.Open sorgu, con, 1, 3

a = rs.RecordCount

b = rs("stokCount")

MsgBox b
.
@Haluk üstad bende bu koddan istifade ederek irsaliyeleri benzersiz numaralarına göre aldırdım ancak ocak şubat ve mart olarak tüm ayların toplamı geldi. Benim kullandığım kod aşağıdaki gibidir.
strSQL = "Select count([İRSALİYE NO]) as irscount from(select distinct([İRSALİYE NO]) From [SALES$]) "

Ben Month([TARİH]) yaparak aylara göre group by yapmak istedim ama sürekli hata aldım. Kodu nasıl revize etmem gerekiyor yardımcı olabilir misiniz? Ben aşağıdaki gibi bir döküm almaya çalıştım.
OCAK 175
ŞUBAT 350
MART 285
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,335
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba; aşağıdakine benzer sorgu kullanın...

SQL:
select
   monthname([irsaliye tarih]) as [Ay],
   count([irsaliye no]) as [İrsaliye Say]
from [Stok hareketler]
group by monthname([irsaliye tarih])
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Merhaba; aşağıdakine benzer sorgu kullanın...

SQL:
select
   monthname([irsaliye tarih]) as [Ay],
   count([irsaliye no]) as [İrsaliye Say]
from [Stok hareketler]
group by monthname([irsaliye tarih])
Sorguyu kendime uyarladım ama geçersiz yordum çağrısı şeklinde hata veriyor. Birde burada count var, count satır sayısını saymaz mı? Benim benzersiz irsaliye adedini saydırmam gerekiyor. Bir irsaliyenin içindeki tüm stok hareketleri aynı irsaliye numarasıyla birden fazla satır olabiliyor. İrsaliye içinde birden fazla ürün var hepsi satır satır hareket olarak alıyorum. Satır sayısı değil benzersizleri almam gerekiyor. Yukarıdaki mesajımda verdiğim sorgu ile yapıyorum ancak aylara göre group by yapamadım.
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Geceden beri denemediğim kod kalmadı kolay olduğunu düşünüyorum ama nerede hata yapıyorum hiç biri istediğimi yapmadı. Bu sorgu ile öncelikle TARİH sütunundaki aylara göre gruplandırıp ve her ayda benzersiz olan İRSALİYE NO sayısını hesaplayıp, DISTINCT kullanarak aynı ay içinde birden fazla kez görünen İRSALİYE NO'ları bir kez saymak ve sonrasında GROUP BY kullanarak ay bazında toplamak istiyorum. Bu kodu çözebilecek kimse yok mu acaba?
Kod:
'strSQL = "Select  month([TARİH]) AS [AY], count([İRSALİYE NO]) as [irscount]  from [SALES$]   " & _
          "GROUP BY month([TARİH])"
          
'strSQL = "SELECT Month([TARİH]) AS Ay, count(DISTINCT[İRSALİYE NO]) AS BenzersizIrsSayisi" & _
         "From [SALES$] Group BY Month([TARİH])"

'strSQL = "SELECT month([TARİH]) AS Ay, " & _
         "Count(DISTINCT[İRSALİYE NO]) AS BenzersizIrsSayisi " & _
         "From (SELECT DISTINCT[İRSALİYE NO], [TARİH] FROM [SALES$]) AS T " & _
         "Group BY month([TARİH])"
        
'strSQL = "SELECT" & _
   " Month([TARİH]) AS Ay," & _
   " Count(*) AS ToplamIrsSayisi," & _
   " Count(DISTINCT [İRSALİYE NO]) AS BenzersizIrsSayisi From [SALES$]" & _
" Group BY Month ([TARİH])"

'strSQL = " SELECT" & _
    "Month([TARİH]) AS Ay," & _
   " Count(*) AS ToplamIrsSayisi," & _
    "Count(DISTINCT [TARİH] & [İRSALİYE NO]) AS BenzersizIrsSayisi" & _
"From" & _
  "  [SALES$]" & _
"Group BY" & _
  "  Month ([TARİH])"


'strSQL = "SELECT MONTH([TARİH]) AS Ay, COUNT(DISTINCT([İRSALİYE NO])) AS BenzersizIrsSayisi" & _
   " From [SALES$]) T" & _
"GROUP BY MONTH([TARİH])"

strSQL = "SELECT Month([TARİH]) AS Ay, COUNT(DISTINCT([İRSALİYE NO])) AS BenzersizIrsSayisi " & _
         "FROM (SELECT DISTINCT(Month([TARİH])) as B, [İRSALİYE NO] FROM [SALES$]) AS T " & _
         "GROUP BY Month([TARİH])"
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İstediğiniz aşağıdakilerden biri değilse, beklediğiniz sonuçları da gösteren örnek bir tablo ekleyin....

C#:
    strSQL = " Select [İRSALİYE NO], Format([TARİH],'mmmm') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Format([TARİH],'mmmm'), [İRSALİYE NO] Order By [İRSALİYE NO]"

C#:
    strSQL = " Select Format([TARİH],'mmmm') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Month([TARİH]), Format([TARİH],'mmmm')"

AY isimleri büyükharfle olacaksa;

C#:
    strSQL = " Select Replace(UCase(Replace(Format([TARİH],'MMMM'),'i','İ')),'ı','I') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Month([TARİH]), Format([TARİH],'MMMM')"


.
 
Son düzenleme:
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
İstediğiniz aşağıdakilerden biri değilse, beklediğiniz sonuçları da gösteren örnek bir tablo ekleyin....

C#:
    strSQL = " Select [İRSALİYE NO], Format([TARİH],'mmmm') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Format([TARİH],'mmmm'), [İRSALİYE NO] Order By [İRSALİYE NO]"

C#:
    strSQL = " Select Format([TARİH],'mmmm') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Month([TARİH]), Format([TARİH],'mmmm')"

AY isimleri büyükharfle olacaksa;

C#:
    strSQL = " Select Replace(UCase(Replace(Format([TARİH],'MMMM'),'i','İ')),'ı','I') As [AY], Count([İRSALİYE NO]) As [ADET] From [Sales$] " & _
             " Where [İRSALİYE NO] Is Not Null Group By Month([TARİH]), Format([TARİH],'MMMM')"


.
üstad öncelikle teşekkür ederim, ortadaki ve sondaki sorgu işime görecek ancak Count değil distinct yaptırmam lazım. Satır sayısını değil benzersiz irsaliye numarasını saydırmak ve kesilen irsaliye adedini öğrenmek istiyorum.


Dönemi

İrsaliye Adedi

Ocak

255

Şubat

422

Mart

375

 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
@Haluk üstad sakin kafa sabahın ilk saatlerinde tekrar bakınca çözdüm. Belki ihtiyacı olan olur diye paylaşıyorum. İstediğimi aşağıdaki şekilde çözdüm. Başka alternatif yolu olur mu bilmiyorum


Kod:
strSQL = "SELECT Format([TARİH],'mmmm') As [AY], Count(*) As [ADET] FROM " & _
         "(SELECT DISTINCT([TARİH]), [İRSALİYE NO] FROM [Sales$] " & _
         "WHERE [İRSALİYE NO] Is Not Null) AS [T] " & _
         "GROUP BY Month([TARİH]), Format([TARİH],'mmmm')"
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Benim önerdiklerimle aynı sonucu veriyor....

Neyse, hangisini istiyorsanız onu kullanın....

.
 
Katılım
18 Mart 2007
Mesajlar
171
Excel Vers. ve Dili
OFFICE 2016
Altın Üyelik Bitiş Tarihi
02-03-2024
Benim önerdiklerimle aynı sonucu veriyor....

Neyse, hangisini istiyorsanız onu kullanın....

.
Teşekkürler eline emeğine sağlık Allah razı olsun üstad
 
Üst