text: /* 1149. Article Views II
  Table: Views
  +---------------+---------+
  | Column Name   | Type    |
  +---------------+---------+
  | article_id    | int     |
  | author_id     | int     |
  | viewer_id     | int     |
  | view_date     | date    |
  +---------------+---------+
  There is no primary key for this table, it may have duplicate rows.
  Each row of this table indicates that some viewer viewed an article (written by some author) on some date. 
  Note that equal author_id and viewer_id indicate the same person.
   
  
  Write an SQL query to find all the people who viewed more than one article on the same date, sorted in ascending order by their id.
  
  The query result format is in the following example:
  
  Views table:
  +------------+-----------+-----------+------------+
  | article_id | author_id | viewer_id | view_date  |
  +------------+-----------+-----------+------------+
  | 1          | 3         | 5         | 2019-08-01 |
  | 3          | 4         | 5         | 2019-08-01 |
  | 1          | 3         | 6         | 2019-08-02 |
  | 2          | 7         | 7         | 2019-08-01 |
  | 2          | 7         | 6         | 2019-08-02 |
  | 4          | 7         | 1         | 2019-07-22 |
  | 3          | 4         | 4         | 2019-07-21 |
  | 3          | 4         | 4         | 2019-07-21 |
  +------------+-----------+-----------+------------+
  
  Result table:
  +------+
  | id   |
  +------+
  | 5    |
  | 6    |
  +------+
  */
  
  --Solution 
  select distinct
      a.viewer_id as id
  from (select distinct * from Views) a
  group by a.viewer_id,a.view_date
  having count(a.view_date) >1
  order by 1
  
  --Solution 2
  WITH summary as (
      select
          a.viewer_id as id,
          a.view_date,
          count(*) as view_cnt
      from (select distinct * from Views) a
      group by 1,2
  )
  
  select distinct 
      id
  from summary
  where view_cnt > 1
  order by id
  
  