Jak poskładać dwie kwerendy w jedną?

0

Zaczynam uczyć się sqla. Mam zestaw zadan dotyczący bazy world. Pierwsze zadanie w zestawie jest następujące:
Ile jest na świecie miast o nieunikatowej nazwie?

Potrafię je rozwiązać w 2 krokach (używając tabeli tymczasowej):

create temporary table tab as (select name, count(name) as ilosc from city group by having ilosc > 1 order by ilosc DESC);
         
         select sum (ilosc) from tab;

rozwiązanie jest poprawne, ale chciałabym wiedzieć, jak je złożyć w jedną kwerendę. proszę o pomoc!

dodanie znacznika <code class="sql"> i poprawienie tytułu wątku - fp

0

ok, to co tu napisałam, nie jest jednak dobrze, musiałam źle przepisać:

create temporary table nieunikatowa as (select name, count(name) as ile from city group by having ile > 1 order by ile DESC);
select sum(ile) from nieunikatowa;

dodanie znacznika <code class="sql"> - fp

0

po 1 to pytanie na poważnie?
po 2 to zapytanie nie jest poprawne

0

Jak wyżej plus:
po 3 co chcesz osiągnąć?

0
  1. Tak, to na poważnie.
  2. Zapytanie
create temporary table nieunikatowa as (select name, count(name) as ile from city group by name having ile > 1 order by ile DESC);

 select sum(ile) from nieunikatowa;

jest poprawne i zwraca poprawny wynik (jest 148 takich miast, przynajmniej w bazie, którą dostarczył nam prowadzący).

  1. Napisałam, co chcę osiągnąć: to samo (odpowiedź na pytanie, ile jest miast o nieunikatowej nazwie w bazie) tylko uzyskane za pomocą jednego zapytania a nie 2.

Na przykład coś takiego:

select name from City where name in(select name from City group by name having count(name) >1) order by name;

Mniej więcej takiej odpowiedzi się spodziewałam.

dodanie znaczników <code class="sql"> - fp

0

czy tabela city ma jakieś Id ?

0

to jeszcze trzeba trochę pomyśleć nad rozwiązaniem bo to pytanie aż bije po oczach ignorancją

select sum(ile) from (select name, count(name) as ile from city group by name having ile > 1)
0
 SELECT SUM(ile) FROM (SELECT name, COUNT(name) AS ile FROM city GROUP BY name HAVING ile > 1)

wyrzuca błąd: every derived table must have its own alias

city ma pole id (primary key).

oczywiście wierzę, że pytanie biję po oczach ignorancją: to pierwsze polecenie z sql-a z jakim mam do czynienia w swoim życiu.
PS. waszej dyskusji o sum(ile) / count (name) nie rozumiem.

poprawienie znacznika <code class="sql"> - fp

0
select count(distinct B.name) from city A,city B where B.name=A.name and A.Id<>B.Id;

1 użytkowników online, w tym zalogowanych: 0, gości: 1