[SORGU] Sql de Geçici Tablo Nasıl Kullanırım
#1
Nordwind veritabanında "Çalışanlar para bazında en çok hangi ürünü satmış kişi bazında rapor" almak istiyorum yazdığım sorgu şöyle ;

select e.EmployeeID,e.FirstName,e.LastName,od.ProductID,sum(od.quantity*od.unitprice)-sum(od.quantity*od.unitprice*od.discount)as ToplamSatıs
from [order details] as od
join orders as o on
o.orderID = od.orderID
join employees as e on
e.employeeID = o.employeeID
join products as p on
od.productID = p.productID
Group By e.EmployeeID,e.FirstName,e.LastName,od.ProductID order by e.employeeID, ToplamSatıs desc

Bu Sorguyla istediğim verileri çekiyorum
--------------------------------------
e.ıd lastname firstname p.ıd toplam satış
1 Nancy Davolio 61 142,5
1 Nancy Davolio 4 132
1 Nancy Davolio 74 128
1 Nancy Davolio 33 94,5
1 Nancy Davolio 66 17
2 Andrew Fuller 38 25190,5999984741
2 Andrew Fuller 29 15845,1200234985
2 Andrew Fuller 62 7393
2 Andrew Fuller 59 6567
2 Andrew Fuller 17 5779,79999542236

sorum şu kişiye göre rapor olacağı için tekrarlayan verileri birleştirmek istiyorum örnek "Nancy" burda 5 kere p. ıd ye göre çıkıyor ben "Nancynin" tek satırda toplam satışını almak istiyorum. burda geçici tablo kullanmam gerekiyor galiba bunu nasıl yapabilirim?



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba..

Her çalışanın en fazla sattığı ürünü ve toplamını almak için bu sorguyu kullanabilirsiniz..:


SQL
  1. SELECT
  2. e.employeeId,
  3. e.firstname,
  4. e.lastname,
  5. od.productId,
  6. SUM(od.quantity*od.unitprice)-SUM(od.quantity*od.unitprice*od.discount) AS toplamsatis
  7.  
  8. FROM products AS p INNER JOIN ((employees AS e
  9. INNER JOIN orders AS o ON e.employeeId = o.employeeId)
  10. INNER JOIN [ORDER details] AS od ON o.orderId = od.orderId) ON p.productId = od.productId
  11.  
  12. GROUP BY e.employeeId, e.firstname, e.lastname, od.productId
  13.  
  14. HAVING (((SUM([od].[quantity]*[od].[unitprice])-SUM([od].[quantity]*[od].[unitprice]*[od].[discount]))
  15. IN (
  16. SELECT top 1 (toplamsatis)
  17. FROM (
  18. SELECT o.employeeId, od.productId,
  19. SUM([od].[quantity]*[od].[unitprice])-
  20. SUM([od].[quantity]*[od].[unitprice]*
  21. [od].[discount]) AS toplamsatis
  22. FROM products AS p INNER JOIN (orders AS o
  23. INNER JOIN [ORDER details] AS od
  24. ON o.orderId = od.orderId)
  25. ON p.productId = od.productId
  26. GROUP BY o.employeeId, od.productId
  27. ORDER BY SUM([od].[quantity]*[od].[unitprice])-
  28. SUM([od].[quantity]*[od].[unitprice]*[od].[discount]) DESC
  29.  
  30.  
  31. ) AS trz WHERE e.employeeId=trz.employeeId
  32.  
  33. )))
  34. ORDER BY e.employeeId, SUM(od.quantity*od.unitprice)-SUM(od.quantity*od.unitprice*od.discount) DESC



Toplam satış için hesaplamalar olduğundan ve having yan cümlesinde alt sorgu kullanıldığından sorgunun açılış süresi bilgisayarınızın hızına göre değişebilir.. Üst sorgudaki sıralamayı kaldırırsanız hız fark eder..

Çok kasarsa, uygulamanız üzerinde farklı çözümler de üretebiliriz..



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
access-sql-9 Altform Geçici Veri Eklenmesi Durumu alperalper 5 569 19-02-2023, 04:14
Son Mesaj: dsezgin
  [VBA] Gecici Tablodan Esas Taboya Kayıt karacahil 5 513 01-11-2021, 19:08
Son Mesaj: dsezgin
access-sql-3 [TABLO] Vardiyalı Nöbetler İçin Tablo Yapısı Nasıl Olmalı? alperalper 5 1.833 03-08-2017, 17:13
Son Mesaj: dsezgin
  [SORGU] 2 tablo/sorgu ile her kayda ait son değerden oluşan tablo yada sorgu oluşturma Gurselgu 5 3.027 02-09-2016, 15:29
Son Mesaj: Gurselgu
  [TABLO] 70 Sutunlu 1 Tablo Mu yoksa 2 Yada 3 Tablo karakabus 4 2.780 09-04-2015, 22:21
Son Mesaj: onur_can
  [SORGU] İk tablo karşılaştırıp mükerrer olanları nasıl silebilrim sonerdursun 2 1.698 31-05-2014, 14:21
Son Mesaj: sonerdursun
  [TABLO] formdaki butonla tablo alanına veri eklemek ve birbirine bağlı tablo oluşturmak perahim 5 3.691 01-07-2013, 21:25
Son Mesaj: mbmbmbmb
access-sql-12 İki tablo farkını nasıl sorgularım? Örnekli Mehmet Eser 10 18.365 19-03-2013, 10:03
Son Mesaj: akd27

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar):