How do i create a view to show the number of total records by name?
CREATE VIEW ViewTest AS
SELECT First_Name || ' ' || last_Name As EMP_NAME,
to_char(READ_DATE, 'YYYY-MON') As MONTH
FROM EMPLOYEE E
INNER JOIN EMPLOYEE_READ ER
ON E.EMP_ID = ER.EMP_ID
WHERE to_char(READ_DATE, 'YYYY-MON') = to_char(sysdate, 'YYYY-MON');
This outputs:
+-------------+----------+
| EMP_NAME | MONTH |
+-------------+----------+
| Morty_Smith | 2020-NOV |
| Morty_Smith | 2020-NOV |
| Morty_Smith | 2020-NOV |
+-------------+----------+
I am looking to get an output like this..
+-------------+----------+-------+
| EMP_NAME | MONTH | COUNT |
+-------------+----------+-------+
| MORTY SMITH | 2020-NOV | 3 |
+-------------+----------+-------+
And assuming I have another person with a different name, the view will show this..
+-------------+----------+---------+
| EMP_NAME | MONTH | COUNT |
+-------------+----------+---------+
| MORTY SMITH | 2020-NOV | 3 |
| JERRY SMITH | 2020-NOV | 1 |
+-------------+----------+---------+
Advertisement
Answer
Use count()
aggregation with group by
SELECT First_Name ||' '||last_Name As EMP_NAME,
to_char(READ_DATE,'YYYY-MON') As MONTH ,count(*) as cnt
FROM EMPLOYEE E INNER JOIN EMPLOYEE_READ ER ON E.EMP_ID = ER.EMP_ID
WHERE to_char(READ_DATE,'YYYY-MON') = to_char(sysdate,'YYYY-MON')
group by First_Name ||' '||last_Name,to_char(READ_DATE,'YYYY-MON')