Ich versuche, die Anzahl der Produkte/Anzahl der Systeme für jedes Geschäft zu finden. Die Tabellen sehen wie folgt aus:Wie erhalten Sie die ursprüngliche Anzahl nach dem Verbinden von Tabellen?
Store
Id
100
200
Customer
Id | dealerId
1 | 100
2 | 200
System
Id | CustomerId
20 | 2
30 | 2
40 | 2
50 | 1
Product
Id | SystemId
1000 | 20
2000 | 50
ich versuche zu bekommen:
storeId | Number of systems | number of products | average
100 | 1 | 1 | 1/1
200 | 3 | 1 | 1/3
ich diese Abfrage geschrieben haben. Ich bekomme die richtige Anzahl an Produkten, aber die Anzahl der Systeme ist durcheinander, weil ich mich den Tabellen anschließe. Gibt es eine Möglichkeit, die Gesamtzahl der Systeme für jedes Geschäft zu erhalten?
SELECT
s.Id as Store,
COUNT(Distinct SystemsIden) as NumOfSystems,
COUNT(distinct ProductIden) as NumOfProduct,
CAST(COUNT(distinct ProductIden)as float)/CAST(COUNT(Distinct SystemsIden) as
float) as average
FROM
Store s
INNER JOIN
(
Select systemsiden,CustomerIden,ProductIden, Customer.StoreId as
storeiden from
(
select Product.ID as ProductIden, System.Id as systemsiden, System.customerId as CustomerIden from product join Ssystem On System.Id = Product.SystemIdId
)
table1 join Customer
on Customer.Id = CustomerIden
)
table2 On s.Id = storeiden
GROUP BY
s.Id
Warum Sie Ihre Zählung werfen schwimmt? Sie sollten Dezimalzahlen verwenden. Gleitkommazahlen sind ungefähre Datentypen. –
@Dansichtlich verwenden Sie entweder mysql oder sql-server. Bitte entfernen Sie das andere Tag aus Ihrer Frage, da es keinem wirklichen Zweck dient, es sei denn, Ihr Code muss wirklich auf beiden Datenbanken laufen. –