Reklama
Szukaj zleceń na Getak.pl

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Temat: Dzielenie dwóch SELECT-ów ?

Witam !

Mam taki o to problem, za pomocą dwóch SELECT-ów wyciągam dane liczbowe z tabel a następnie dziele je przez siebie, jednak wynik jest nie poprawny, zawsze NULL. O to SELECT-y, działają poprawnie:

1. SELECT COUNT(*) FROM Contractors c; -- = 3846
2. SELECT COUNT(cc.Id) FROM Contractors c, ContractorContacts cc WHERE
c.ID = cc.ContractorId;-- = 1535

-----------O to moje zapytanie-----------

(SELECT
(SELECT COUNT(*) FROM Contractors c, ContractorContacts cc WHERE c.ID = cc.ContractorId) / (SELECT COUNT(*) FROM Contractors c ));




Pracuje na MS SQL Server 2008David Gałan edytował(a) ten post dnia 03.11.11 o godzinie 12:34
3.11.2011, 12:31

Szymon P. Trzymać życia
rytm, a nie szarpać
się z nim

Temat: Dzielenie dwóch SELECT-ów ?


declare @zmiennaPierwsza decimal(18,9), @zmiennaDruga decimal(18,9), @wynik decimal(18,9)
SET @zmiennaPierwsza = (SELECT COUNT(*) FROM Contractors c)
SET @zmiennaDruga = (SELECT COUNT(cc.Id) FROM Contractors c join ContractorContacts cc ON
c.ID = cc.ContractorId)

set @wynik = (@zmiennaDruga / @zmiennaPierwsza)

select @wynik



Chodzilo ci o cos takiego ?Szymon P. edytował(a) ten post dnia 03.11.11 o godzinie 23:41
3.11.2011, 12:46

Temat: Dzielenie dwóch SELECT-ów ?

Dziękuję Ci bardzo, dokładnie o to mi chodziło. Tylko proszę powiedz mi jeszcze dlaczego to moje zapytanie nie chciało działać ?
Pozdrawiam
3.11.2011, 12:56

Szymon P. Trzymać życia
rytm, a nie szarpać
się z nim

Temat: Dzielenie dwóch SELECT-ów ?

Zadanie domowe ;)
3.11.2011, 13:03

Maciek Kański Programista C#
ASP.NET

Temat: Dzielenie dwóch SELECT-ów ?

David Gałan:
jednak wynik jest nie poprawny, zawsze NULL
Naprawdę NULL ? To ja poproszę o wyjaśnienie skąd ten NULL - ja tego NULLa na moim SQL 2008 (compatibilityLevel=100) nie mogę odtworzyć.

Co innego ZERO - niech to pozostanie zadaniem dowomowym - ale NULL???
3.11.2011, 14:16

Jacek Szajer Współwłaściciel,
Business
Intelligence
Technologies SC

Temat: Dzielenie dwóch SELECT-ów ?

Dokładnie ta sama wątpliwość co przedmówca - czy aby na pewno NULL?

a jako podpowiedź do zadania domowego - zobacz jaki wynik da:

(SELECT
1.0*(SELECT COUNT(*) FROM Contractors c, ContractorContacts cc WHERE c.ID = cc.ContractorId) / (SELECT COUNT(*) FROM Contractors c ));
3.11.2011, 18:17

Temat: Dzielenie dwóch SELECT-ów ?


;WITH zap1 as (
SELECT COUNT(*) * 1.0 as ile_all
FROM Contractors c
), zap2 as (
SELECT COUNT(cc.Id) * 1.0 as ile_id
FROM Contractors c join ContractorContacts cc ON c.ID = cc.ContractorId
)

select case when zap1.ile_all = then Null else zap2.ile_id / zap1.ile_all end as wynik
3.11.2011, 23:48

Temat: Dzielenie dwóch SELECT-ów ?

Koledzy mój błąd, źle odczytałem wartość z tabeli wynikowej, faktycznie było 0. Dziękuję wszystkim za pomoc, zdecydowanie poszerzyliście mój kont patrzenia na zapytania, rozwiązanie było naprawdę proste, ja niestety nie potrafiłem tego zrobić. Finalnie wybrałem rozwiązanie Szymona, wydało mi się najbardziej czytelne. Oczywiście wszystkie rozwiązania są jak najbardziej okej :).
PozdrawiamDavid Gałan edytował(a) ten post dnia 04.11.11 o godzinie 12:20
4.11.2011, 12:19



Wyślij zaproszenie do