I have a rate table:
date
price
currency_id
And would like to get duplicate values on different dates, this is, see if the same rate is on different dates.
I've ran this for currency_id 15:
SELECT rate, COUNT(rate)
FROM rates
where currency_id =15
group by 1
HAVING COUNT(rate)>1;
And I get an approximation of what I need, but I would like to see the date it repeats, not just the rate and how many times it appears..
When I add the date, count is only 1 which makes sense because there's only 1 rate per date, how can I find out on what dates the rate is the same?
Thanks,
Aggregate all the dates in an array:
SELECT rate,
COUNT(rate),
array_agg(date)
FROM rates
where currency_id =15
group by 1
HAVING COUNT(rate)>1;
Related
Is there a formula where I can calculate [amount of days between arrival date and departure date], an arrival and departure date in high, low, or partly high/low dates. So I have a column with an arrival date and a column with a departure date where the days in between could be in a high, low or even crossover season. 'high and low crossover': meaning if a person stays certain days in low season and certain days in high season where another price is needed to pay.
I have added a link to the sheet. In the Data sheet I made a calendar where I had the Low and High Season marked. Maybe this reference can be used to calculate. Vlookup and Countif maybe?
So basically I only need column "I" and "J" calculated from the columns "G" and "H".
Thanks for your help.
Use below formulas to calculate number of days in Low, ie. High season:
=countif(arrayformula(vlookup(SEQUENCE(int(H3)-int(G3);1;int(G3));Data!$A:$F;6;false));"Low")
=countif(arrayformula(vlookup(SEQUENCE(int(H3)-int(G3);1;int(G3));Data!$A:$F;6;false));"High")
I'm in healthcare and we're trying to assess the number of discharges we have per hour of day, but we'd also like to be able to filter them down by day of week, or specific month, or even a particular day of week in a particular month (e.g. " what is the average number of discharges per hour on Mondays in January?")
I'm confident that Tableau can do this, but haven't been able to make the averages show up in my line graph... every time that I convert it from COUNT to AVG, the line simply goes straight. I got close when I did a table calculation to find the Average (dividing the count per hour by the number of days captured in the report), but when I add a filter for either the month or day of week, selecting one of the options of the filter reduces the total number that is being counted, rather than re-averaging the non-filtered items. (i.e. if the average of the 7 days of the week is "10" for a particular hour, and I deselect the first three days of the week, it's now saying that my average for that hour is roughly 6, despite the fact that all of the days are very close to 10 at that hour.)
Currently, my data table has the following columns:
Account#/MonthYear/HourOfDay/DayOfWeek
ex.12345678/ Jan-17 / 12 /Sunday
I would just create a few calculated fields to differentiate the parts of the calendar you might want to filter/aggregate on. Mixing the month and day of the week with filtering is pretty straight forward with the calculated fields. Then do standard summing to get what you are looking for because an average count of records is always one unless you are throwing some other calculation into the mix. I threw a quick example up on Tableau Public for you to get the idea.
I have Tableau 9.1 and have the costs per transaction in a column over the course of 3 years. I also have the dates and locations for all the transactions.
How do i make a calculated field for total cost at a location for a given quarter assigned to each observation?
Generally that depends on how you want to display these values.
An easy way would be via a LOD calculation:
{fixed DATETRUNC('quarter',[Date]), [Location]: SUM([Cost])}
This calculates the SUM([Cost]) for each quarter of [Date] and each [Location]
In Tableau, I have a Date Filter with 31 days (days in a month).
I have a calculation,
Sum(sales)/(No of days)
Based on no of days selected in the Date Filter, my calculation should change.
Eg : If 12 days are selected in filter
The Calculation should be Sum(sales)/12
If 20 days then Sum(sales)/20.
Regards
Try this formula
sum(Sales) / datediff('day', min(Date), max(Date))
Just realize that if you have missing data at the start or end of your period, say no entries at all for the first few days of the month, it will only start counting days at the very first day of data, i.e. min(Date)
For those reasons, it is often useful to pad your data to have at least one row per day, even if it most of the fields are null in the padded data row. You can use a union or left join to do that without disturbing your original data.
I have a dataset as follows:
DATE | AMOUNT | CATEGORY
20.12.2015 | 100.00 | Drinks
22.12.2015 | 50.00 | Food
20.12.2015 | 70.00 | Transport
07.12.2015 | 50.00 | Transport
...
There are several records with amounts spent per week and day.
I would like to have a bar chart with the categories on the left and the length of the bars indicating the weekly average, ie. what is spent on average per week during a filtered time frame
If I user the normal AVG([AMOUNT]) it calculates the daily average, rather than the weekly one.
I found this question:
Tableau - weekly average from daily data
However one of the answers is not dynamically, the other lists averages for consecutive weeks, rather than per category and I can't think of a way to apply the same technique for mmy problem.
Add a new dimension, which is for the weeks
You can then create a variable which calculates the average amount for a specific week as follows:
{FIXED [Date (Week numbers)], [Category]: avg([Amount]) }
Then when you want to average you can average the above formula
AVG({FIXED [Date (Week numbers)], [Category]: avg([Amount]) })
First make sure the data type for the field named DATE is type date instead of string. If not, change the data type from the right mouse menu or worst case use the date parse function in a calculated field.
Second, after you place the DATE field onto a shelf, set the date level of granularity to Week. Again ], use the right mouse context menu. Choose from the second batch of choices to truncate dates to the week level. The first batch of options on that menu are date parts, not dates. You may want to then change the field to discrete depending on your intended view.
Based on Mark Andersen's solution I found the following:
create a calculated field WeekNumber:
DATETRUNC('week', [Date])
create a calculated field WeekTotal:
{FIXED [WeekNumber], [Main Category]: SUM([Amount Person]) }
create a calculated field WeekDiff:
DATEDIFF('week',#2015-08-01#,TODAY())
create a calculated field WeekAvg:
[WeekTotal] / [WeekDiff]
Use WeekAvg as the meassure for the bars and it's done.
A few remarks for that:
Mark's solution went int he right direction. I had to replace avg([Amount]) with sum([Amount]) since I want to have the total per week and average it afterwards.
However it didn't exactly calculate what I wanted since Tableau only calculates averages based on the weeks that have a spending.
If I have
40$ in week 1
20$ in week 2
30$ in week 4
then it calculates (40+20+30)/3 = 30 while I would like to have (40+20+30)/4 = 20.25
In my use case my solution works because I have a fixed time frame until TODAY(), however it would be conviniant if that would be calculated automatically if I use a filter between two arbitrary dates.