Професионална програма
Loading...
+ Нов въпрос
Denislava91 avatar Denislava91 5 Точки

10.Country Representative -Database Basics MS SQL Exam 11 Aug 2020

Здравейте,

Опитвам се да реша тази задача с DENSE_RANK , но стигам до едно положение и не мога да продължа:

1.Как да не визуализирам самия ранк?

2.Защо не мога да използвам филтрация с WHERE/HAVING CLause да визуализирам само с ранк 1?

Предварително благодаря.

SELECT
c.Name,
d.Name,
DENSE_RANK() OVER
(
    PARTITION BY c.Name
    ORDER BY COUNT(i.DistributorId) DESC

) as orderRank

FROM Countries AS c
left JOIN Distributors AS d ON d.CountryId=c.Id
left JOIN Ingredients AS i ON d.Id=i.DistributorId
GROUP BY c.Name,d.Name
ORDER BY c.Name,d.Name

--where/having [orderRank]=1

 

Тагове:
0
Module: C# DB
icowwww avatar icowwww 1836 Точки
Best Answer

Здравей,

Можеш да селектираш, каквото искаш от тази селекция. Като изнесеш Order и условието, кои редове да излизат във външната селекция.

Например 

SELECT CountryName,DisributorName from (
SELECT
c.Name as CountryName,
d.Name as DisributorName,
DENSE_RANK() OVER
(
    PARTITION BY c.Name
    ORDER BY COUNT(i.DistributorId) DESC

) as orderRank

FROM Countries AS c
left JOIN Distributors AS d ON d.CountryId=c.Id
left JOIN Ingredients AS i ON d.Id=i.DistributorId
GROUP BY c.Name,d.Name) as innerSelection
WHERE orderrank = 1
ORDER BY CountryName,DisributorName;

 

0
26/10/2021 22:22:49
Denislava91 avatar Denislava91 5 Точки

Благодаря!

0