Reputation: 953
I'm trying to make a table of data proportion per month
Data:
Message | Date |
bla bla | 2018-04-10 |
blabla | 2018-04-11 |
blabla | 2018-04-12 |
blabla | 2018-04-13 |
blabla | 2018-05-13 |
blabla | 2018-05-14 |
blabla | 2018-05-15 |
blabla | 2018-05-16 |
blabla | 2018-05-17 |
I tried
SELECT Date, count(*) as Message, EXTRACT(YEAR FROM Date) as year, EXTRACT(MONTH FROM Date) as month, MIN(Date) as date
FROM `my_table`
GROUP BY Date, EXTRACT(YEAR FROM Date) as an, EXTRACT(MONTH FROM Date)
I wanted:
Message | Date |
4 | april |
5 | may |
I'm so sorry, I don't know how to put tables here.
Upvotes: 0
Views: 46
Reputation: 172994
Below is for BigQuery Standard SQL
#standardSQL
SELECT
COUNT(*) AS Message,
EXTRACT(YEAR FROM Date) AS year,
FORMAT_DATE('%B', Date) AS month
FROM `project.dataset.my_table`
GROUP BY
EXTRACT(YEAR FROM Date),
FORMAT_DATE('%B', Date)
You can test, play with above using dummy data fro you question as below
#standardSQL
WITH `project.dataset.my_table` AS (
SELECT 'bla bla' Message, DATE '2018-04-10' Date UNION ALL
SELECT 'blabla', '2018-04-11' UNION ALL
SELECT 'blabla', '2018-04-12' UNION ALL
SELECT 'blabla', '2018-04-13' UNION ALL
SELECT 'blabla', '2018-05-13' UNION ALL
SELECT 'blabla', '2018-05-14' UNION ALL
SELECT 'blabla', '2018-05-15' UNION ALL
SELECT 'blabla', '2018-05-16' UNION ALL
SELECT 'blabla', '2018-05-17'
)
SELECT
COUNT(*) AS Message,
EXTRACT(YEAR FROM Date) AS year,
FORMAT_DATE('%B', Date) AS month
FROM `project.dataset.my_table`
GROUP BY
EXTRACT(YEAR FROM Date),
FORMAT_DATE('%B', Date)
with result as
Row Message year month
1 5 2018 May
2 4 2018 April
Upvotes: 2
Reputation: 743
If data is limited to this year only then
SELECT EXTRACT(MONTH FROM Date) date , count(*) message from your_table
GROUP BY EXTRACT(MONTH FROM Date)
For multiple year you can try
SELECT EXTRACT(MONTH FROM Date) as Mnth,EXTRACT(YEAR FROM Date) as yr ,
count(*) message from your_table
GROUP BY EXTRACT(MONTH FROM Date), EXTRACT(YEAR FROM Date)
Upvotes: 2