<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sql_select(self,fields,*args,**kwargs):
 """Execute a simple SQL ``SELECT`` statement and returns values as new numpy rec array. The arguments *fields* and the additional optional arguments are simply concatenated with additional SQL statements according to the template:: SELECT <fields> FROM __self__ [args] The simplest fields argument is ``"*"``. Example: Create a recarray in which students with average grade less than 3 are listed:: result = T.SELECT("surname, subject, year, avg(grade) AS avg_grade", "WHERE avg_grade < 3", "GROUP BY surname,subject", "ORDER BY avg_grade,surname") The resulting SQL would be:: SELECT surname, subject, year, avg(grade) AS avg_grade FROM __self__ WHERE avg_grade < 3 GROUP BY surname,subject ORDER BY avg_grade,surname Note how one can use aggregate functions such avg(). The string *'__self__'* is automatically replaced with the table name (``T.name``); this can be used for cartesian products such as :: .. Note:: See the documentation for :meth:`~SQLarray.sql` for more details on the available keyword arguments and the use of ``?`` parameter interpolation. """

        SQL = "SELECT "+str(fields)+" FROM __self__ "+ " ".join(args)
        return self.sql(SQL,**kwargs)