Я новичок в SQL и использую MonetDB для загрузки большого файла в R studio. Я загрузил свои данные как базу данных с помощью monetDB и теперь хотел бы выполнить приведенный ниже код R для данных в этой базе данных:

my_selection <- db_data %>% group_by(id) %>% 
  tally(. , sort = TRUE) %>% 
  top_n(100) %>% 
  select(id) 

По сути, я хочу сгруппировать свои данные по «id», подсчитать и отсортировать их, а также выбрать в них 100 самых больших элементов. Что было бы эквивалентом этого в SQL?

Я выполняю запросы в R следующим образом:

my_selection <- dbGetQuery(connection,"SELECT * FROM my_table [INSERT REST OF CODE HERE]") 
0
user5057431 28 Июн 2016 в 13:45

1 ответ

Лучший ответ

Это зависит от СУБД, которую вы используете,

SQL-сервер:

SELECT TOP 100 id,sum(YourOtherColumn) as sum_c
FROM YourTable
GROUP BY id
ORDER BY sum_c DESC

MySQL:

SELECT id,sum(YourOtherColumn) as sum_c
FROM YourTable
GROUP BY id
ORDER BY sum_c DESC
LIMIT 100

Если что-то еще, скажите, и я отредактирую ответ.

0
sagi 28 Июн 2016 в 13:50
Я использую MySQL следующим образом в R: my_selection <- dbGetQuery (соединение, «ВЫБРАТЬ * ИЗ my_table [ВСТАВИТЬ ОТДЫХ КОДА]»)
 – 
user5057431
28 Июн 2016 в 13:53
Спасибо! У меня есть еще 40 колонок. Как это перевести в сумму (YourOtherColumn)? Кроме того, извините за мое незнание, но что вы имеете в виду под sum_c?
 – 
user5057431
28 Июн 2016 в 13:57
sum_c - это псевдоним, псевдоним для столбца. Не знаю, нужна вам сумма или нет, вы собирались сделать это R? в противном случае просто напишите SELECT ID,column1,column2,column3... и ORDER BY <YourOrderColumn> @ wsp1morlet
 – 
sagi
28 Июн 2016 в 13:59