Mam poniższej tabeli:funkcja MAX bez grupy przez
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
Chcę wyniku:
ID | NUM
5 | 10
Kiedy próbuję użyć MAX (NUM) I get i błąd, że mam używać GROUP bY, aby korzystać z funkcji Max
jakiś pomysł?
Mam poniższej tabeli:funkcja MAX bez grupy przez
ID | NUM
1 | 4
2 | 9
3 | 1
4 | 7
5 | 10
Chcę wyniku:
ID | NUM
5 | 10
Kiedy próbuję użyć MAX (NUM) I get i błąd, że mam używać GROUP bY, aby korzystać z funkcji Max
jakiś pomysł?
Zgodnie z błędu, wykorzystania agregatu jak Max
wymaga klauzula Group By
, jeśli na liście wyboru znajdują się kolumny niezagregowane (W twoim ase, próbujesz znaleźć MAX(Num)
, a następnie zwróć wartość (wartości) związaną z kolumną ID
). W MS SQL Server można dostać to, co chcesz przez zamawiającego i ograniczenie zwróconych wierszy:
SELECT TOP 1 ID, NUM
FROM [table]
ORDER BY NUM DESC;
w innych systemach RDBMS LIMIT
oferuje podobną funkcjonalność.
Edit
Jeśli trzeba zwrócić wszystkie wiersze, które mają taką samą maksymalną, a następnie użyć WITH TIES
qualification:
SELECT TOP 1 WITH TIES ID, NUM
FROM [table]
ORDER BY NUM DESC;
Jak o:
SELECT TOP 1 ID,NUM FROM table ORDER BY NUM DESC;
Tak, byłem na autopilocie. Poprawiłem je – jpiasetz
Zrób to -
SELECT TOP 1 ID,
NUM
FROM <yourtable>
ORDER BY NUM DESC;
@AaronBertrand - Mam nadzieję, że wiesz, że osoba przesłuchująca może edytować swoje pytanie. Jak myślisz, gdzie są 3 odpowiedzi z "LIMIT"? – JHS
Przepraszam, przybyłem tu 5 godzin później i nie widzę żadnych dowodów na żadne zmiany. Oczywiście, jeśli widzę LIMIT odpowiedzi, nie powinienem pozwolić im zostać, ponieważ są nieprawidłowe, prawda? Dzięki za poprawienie, ale teraz to tylko duplikat. –
może zwrócić więcej niż 1 wynik:
SELECT id, num
FROM table
WHERE num = (SELECT MAX(num) FROM table)
Spróbuj zapytania.
WITH result AS
(
select DENSE_RANK() OVER( ORDER BY NUM desc) AS RowNo,ID,NUM from #emp
)
select ID,NUM from result where RowNo=1
powróci wartości max nawet jeśli ma więcej MAX wartości jak:
ID | NUM
5 | 10
6 | 10
patrz poniżej link, aby dowiedzieć się więcej na temat rankingu funkcje:
http://msdn.microsoft.com/en-us/library/ms189798
uzyskać wszystkie wiersze mają max wartości ale istnieją 3 SELECT, to nie jest dobre dla wydajności
SELECT id, MAX(num) as num
FROM table
GROUP BY id
ORDER BY MAX(num) DESC
LIMIT (SELECT COUNT(*)
FROM table
WHERE num =(SELECT MAX(num) FROM table)
)
To pytanie jest oznaczone jako Serwer SQL, nie ma "LIMIT" – Taryn
Czego chcesz max? "ID" lub "NUM"? – JHS
Chcę MAX of Num, ale chcę również znać identyfikator. –
Przykład może być lepszy, jeśli odetniesz 5, 10 i uzyskasz wynik 2, 9 zgodnie z oczekiwaniami. Co się stanie, jeśli dwa wiersze mają wartość MAX (num)? – Glenn