Below is the list of tables from the database along with their columns and datatype. Need to generate an accurate SQL query for the question.
Only use the columns present in the respective table. Only use the columns which are required to generate the SQL query. Only use table joins if required and not otherwise.

### Tables ###
TABLE: CREATE TABLE agreements ( document_id number, event_id number )
TABLE: CREATE TABLE assets ( asset_id number, other_details text )
TABLE: CREATE TABLE locations ( location_id number, other_details text )
TABLE: CREATE TABLE assets_in_events ( asset_id number, event_id number )
TABLE: CREATE TABLE channels ( channel_id number, other_details text )
TABLE: CREATE TABLE events ( event_id number, address_id number, channel_id number, event_type_code text, finance_id number, location_id number )
TABLE: CREATE TABLE products_in_events ( product_in_event_id number, event_id number, product_id number )
TABLE: CREATE TABLE parties_in_events ( party_id number, event_id number, role_code text )
TABLE: CREATE TABLE addresses ( address_id number, address_details text )
TABLE: CREATE TABLE parties ( party_id number, party_details text )
TABLE: CREATE TABLE finances ( finance_id number, other_details text )
TABLE: CREATE TABLE products ( product_id number, product_type_code text, product_name text, product_price number )

### Question ###
Show the names of products and the number of events they are in, sorted by the number of events in descending order.

### Accurate SQL ###

SELECT T1.product_name, COUNT(*) FROM products AS T1 JOIN products_in_events AS T2 ON T1.product_id = T2.product_id GROUP BY T1.product_name ORDER BY COUNT(*) DESC