Loading...
vancho avatar vancho 430 Точки

Functions-Triggers ... Exercises: Problem 30. Count of Countries by Currency

Къде е уловката в тази задача, че не минава в judge? Или по-скоро къде е грешката в условието?

Условието:

Find the number of countries for each currency. Display three columns: currency code, currency description and number of countries. Sort the results by number of countries (from highest to lowest), then by currency description alphabetically. Name the columns exactly like in the table below. Submit your query statement as Prepare DB & run queries in Judge.

 

Ето и заявката:

SELECT c.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(c.country_code) AS NumberOfCountries
  FROM countries AS c
 RIGHT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY c.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

Тагове:
0
Module: Java DB 14/10/2016 12:54:20
kaloyannikov avatar kaloyannikov 531 Точки

странно ми е що не ти минава моята заявка е същата с разликата че взимам от currencies и правя left join , а ти взимаш първо от countries и правиш right което би трябвало да е 1 и също.

SELECT
cu.currency_code AS CurrencyCode,
cu.description AS Currency,
COUNT(c.currency_code) AS NumberOfCountries
FROM currencies AS cu
  LEFT JOIN countries AS c
		ON c.currency_code = cu.currency_code
GROUP BY c.currency_code,cu.description
ORDER BY NumberOfCountries DESC,Currency ASC

EDIT : 

Трябва да вземеш currency_code от currencies не от countries 

0
14/10/2016 13:56:45
vancho avatar vancho 430 Точки

Както и да я въртя моята, не минава. Предполагам, че пак е проблем от DB енджина на judge. Oчаквам, някой от Софтуни да се произнесе по проблема, защото гледам има и други на които не минава.

0
14/10/2016 14:24:20
RoYaL avatar RoYaL Trainer 6849 Точки
SELECT cu.currency_code

Работата е, че currency_code-а трябва да се вземе от таблицата currencies

0
vancho avatar vancho 430 Точки

Ако това имаш в предвид:

 

SELECT cu.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(cu.currency_code) AS NumberOfCountries
  FROM countries AS c
 LEFT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY c.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

 

пак не минава!

 

ИЛИ

 

SELECT cu.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(cu.currency_code) AS NumberOfCountries
  FROM countries AS c
 LEFT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY cu.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

 

пак не минава!

0
14/10/2016 15:02:13
RoYaL avatar RoYaL Trainer 6849 Точки

Взел съм ти заявката от първия пост

SELECT c.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(c.country_code) AS NumberOfCountries
  FROM countries AS c
 RIGHT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY c.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

И я пускам като

SELECT cu.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(c.country_code) AS NumberOfCountries
  FROM countries AS c
 RIGHT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY c.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

И си дава 100 точки?

0
kaloyannikov avatar kaloyannikov 531 Точки
SELECT cu.currency_code AS CurrencyCode, 
      cu.description AS Currency,
     COUNT(c.country_code) AS NumberOfCountries
  FROM countries AS c
 RIGHT JOIN currencies AS cu
    ON cu.currency_code = c.currency_code
 GROUP BY c.currency_code, cu.description
 ORDER BY NumberOfCountries DESC, Currency ASC;

Не трябваше да сменяш right join  в твоя случай понеже първо взимаш от таблица countries а после currencies .

Така си минава.

0
SvetlinStoyanov avatar SvetlinStoyanov 0 Точки

Здравей, Колега,

Опитай с RIGHT OUTER JOIN, тък като Currencies ти е втората таблица, следователно от условието се подразбира, че тя би трябвало да бъде водеща(всички record-и от нея трябва да бъдат включени, а тези, които не фигурират в Countries трябва да са NULL).

 

0
Cemish avatar Cemish 18 Точки

Вместо "Currency ASC" изолзвай : "cu.description".

Този код минава:

SELECT Currencies.CurrencyCode,Currencies.Description AS 'Currency',COUNT(Countries.CountryCode) AS NumberOfCountries
FROM Countries 
RIGHT JOIN Currencies
ON Currencies.CurrencyCode=Countries.CurrencyCode
GROUP BY  Currencies.CurrencyCode,Currencies.Description
ORDER BY COUNT(Countries.CountryCode) DESC,Currencies.Description ASC

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.