Автор Тема: SQL-задачка - закачка (сортиране )  (Прочетена 6508 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Имаме следната таблица с дейта към нея:

Код: SQL
  1. CREATE TABLE members (
  2.     member_name CHAR(11) NOT NULL,
  3.     member_score INTEGER NOT NULL,
  4.     PRIMARY KEY (member_name , member_score)
  5. )
  6.  
  7. -- Inserting data
  8. INSERT INTO members (member_name,member_score) VALUES ('jazzman', '2');
  9. INSERT INTO members (member_name, member_score) VALUES ('Avalanche', '3');
  10. INSERT INTO members (member_name, member_score) VALUES ('jazzman', '5');
  11. INSERT INTO members (member_name, member_score) VALUES ('canon4o', '4');
  12. INSERT INTO members (member_name, member_score) VALUES ('canon4o', '2');
  13. INSERT INTO members (member_name, member_score) VALUES ('jazzman', '1');
  14.  
  15.  

Условието е изхода да се групира по име на потрбителя, частичен резултат и този с най-висок резултат за всеки един изведен в следният ред:

Код: Bash
  1. +-------------+--------------+-------------+
  2. | member_name | member_score | heigh_score |
  3. +-------------+--------------+-------------+
  4. | jazzman     |            5 |           5 |
  5. | jazzman     |            2 |           5 |
  6. | jazzman     |            1 |           5 |
  7. | canon4o     |            4 |           4 |
  8. | canon4o     |            2 |           4 |
  9. | Avalanche   |            3 |           3 |
  10. +-------------+--------------+-------------+
  11. 6 rows in set (0.00 sec)
  12.  
« Последна редакция: 19 Юли 2015, 18:52:32 от Avalanche »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: SQL-задачка - закачка (сортиране )
« Отговор #1 -: 19 Юли 2015, 19:02:30 »
Хмм, дай малко пояснение какво точно да разбираме под "частичен резултат" и "heigh_score".
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Wanderer

  • Full Member
  • ***
  • Благодарности
  • -Казани: 4
  • -Получени: 26
  • Публикации: 196
Re: SQL-задачка - закачка (сортиране )
« Отговор #2 -: 19 Юли 2015, 19:04:02 »
----
« Последна редакция: 19 Юли 2015, 19:08:17 от Wanderer »
“You must make the Journey along the road, nobody is able to do it for you!”

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: SQL-задачка - закачка (сортиране )
« Отговор #3 -: 19 Юли 2015, 19:35:33 »
Хмм, дай малко пояснение какво точно да разбираме под "частичен резултат" и "heigh_score".

Най-вероятно по колона „member_score“

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: SQL-задачка - закачка (сортиране )
« Отговор #4 -: 19 Юли 2015, 20:36:50 »
Под частичен имам в предвид резултата (member_score) на всеки един потребител подреден по име за момента. Под high_score да се вземе най-високият резултат за момента на всеки един. Виж как съм извел изхода по-горе.   

ПП Би трябвало да бъде highest_score, ама шъ ма прощаваш Аваланч  :)
« Последна редакция: 19 Юли 2015, 20:52:12 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: SQL-задачка - закачка (сортиране )
« Отговор #5 -: 19 Юли 2015, 21:07:29 »
С SQL-a не сме големи приятели ама дай и аз да се пробвам веднъж

Код: SQL
  1. SELECT b.member_name, b.member_score, m.high_score
  2. FROM members AS b
  3.       INNER JOIN (SELECT member_name, MAX(member_score) AS high_score
  4.                   FROM members
  5.                   GROUP BY member_name) AS m
  6.       ON m.member_name = b.member_name
  7. ORDER BY m.high_score DESC, b.member_score DESC

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: SQL-задачка - закачка (сортиране )
« Отговор #6 -: 19 Юли 2015, 21:11:32 »
Ха-ха-ха малко преди теб аз драснах следното :)

TROLL
Код: MySQL
  1. select a1.member_name, a1.member_score, a2.heighest_score from members a1
  2. select member_name, max(member_score) as heighest_score from members
  3. group by member_name) as a2 on (a2.member_name = a1.member_name)
  4. order by heighest_score desc, member_score desc
« Последна редакция: 19 Юли 2015, 23:16:36 от Avalanche »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: SQL-задачка - закачка (сортиране )
« Отговор #7 -: 19 Юли 2015, 21:34:04 »
ей ви още едно със subquery във външният селет. оставям на Ави да го explain-не :)

TROLL
Код: MySQL
  1. select a1.member_name, a1.member_score, (
  2. select max(member_score) from members a2
  3. where a1.member_name = a2.member_name) as heighest_score from members a1
  4. order by heighest_score desc, member_score desc
« Последна редакция: 19 Юли 2015, 23:16:47 от Avalanche »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html