I record eftpos payments that are payed as a group at the end of each day, but am having trouble matching individual payments to the daily total
Payments table:
|id | paymentjobno| paymentamount| paymentdate|paymenttype|
| 1 | 1000 | 10 | 01/01/2000 | 2 |
| 2 | 1001 | 15 | 01/01/2000 | 2 |
| 3 | 1002 | 18 | 01/01/2000 | 2 |
| 4 | 1003 | 10 | 01/01/2000 | 1 |
| 5 | 1004 | 127 | 02/01/2000 | 2 |
I want to return something like this so I can match it to $43 transactions on the following day and record payment ID numbers against the transaction
|id | paymentjobno| paymentamount| paymentdate|paymenttype|daytotal|
| 1 | 1000 | 10 | 01/01/2000 | 2 | 43 |
| 2 | 1001 | 15 | 01/01/2000 | 2 | 43 |
| 3 | 1002 | 18 | 01/01/2000 | 2 | 43 |
Below is my current attempt, but I only get one returned row per day even if there's multiple payments, and the daytotal is the same for every returned result, which is also not the value I was expecting. What am I doing wrong?
SELECT
id,
paymentjobno,
paymentamount,
paymentdate,
paymenttype,
t.daytotal
FROM payments
LEFT JOIN (
SELECT SUM(paymentamount) AS daytotal
FROM payments
GROUP BY paymentdate) t ON id = payments.id
WHERE paymenttype = 2 AND paymentdate $dateclause
GROUP BY payments.paymentdate
I tried to search and experimented, but couldn't figure out, how to add slim to rails stats views statistics. It is counting only .erb templates, but I want .slim to be added as these are views too.
% bin/rails stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers | 3245 | 1634 | 57 | 218 | 3 | 5 |
| Helpers | 186 | 149 | 0 | 18 | 0 | 6 |
| Jobs | 34 | 20 | 2 | 2 | 1 | 8 |
| Models | 879 | 541 | 25 | 77 | 3 | 5 |
| Mailers | 85 | 53 | 3 | 6 | 2 | 6 |
| Channels | 46 | 28 | 3 | 4 | 1 | 5 |
| Views | 0 | 0 | 0 | 0 | 0 | 0 |
+----------------------+--------+--------+---------+---------+-----+-------+
I could add an extra rules for something like "Slim views", but this would count the .erb templates in views too.
I am using psql and joined three tables A, B and C from table A.
For example resulting table is as follows:
+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
| 1 | 5 | 12 | 16 |
| 2 | 5 | 7 | 8 |
| 3 | 5 | 6 | 21 |
| 4 | 8 | 12 | 16 |
| 5 | 8 | 3 | 9 |
| 6 | 9 | 11 | 32 |
| 7 | 9 | 8 | 2 |
+----+------+------+------+
I am trying to create c_id relations over a_id. In a_id there are three groups [5,8,9]. For example c_id=16 has a relation to a_id=[5,8], so c_id=[8,21,9,32] must be protected via a_id=[5,8]. And resulting table should look like as follows:
+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
| 1 | 5 | 12 | 16 |
| 2 | 5 | 7 | 8 |
| 3 | 5 | 6 | 21 |
| 4 | 8 | 12 | 16 |
| 5 | 8 | 3 | 9 |
+----+------+------+------+
How can I write such a condition in join statement?
After the join, you can write this query. I created your result table directly, and then I wrote a SQL query.
SELECT * from res
WHERE a_id in (SELECT distinct a_id
FROM res
WHERE c_id=16)
My data looks like this:
+---------------+-----+-----+------+-----+-----+
| Serial Number | LSL | LCL | DATA | UCL | USL |
+---------------+-----+-----+------+-----+-----+
| 1 | 1 | 3 | 2.3 | 7 | 9 |
| 2 | 1 | 3 | 3.1 | 7 | 9 |
| 3 | 1 | 3 | 2.7 | 7 | 9 |
| 4 | 1 | 3 | 4.9 | 7 | 9 |
| 5 | 1 | 3 | 5 | 7 | 9 |
| 6 | 1 | 3 | 3 | 7 | 9 |
| 7 | 1 | 3 | 10 | 7 | 9 |
| 8 | 1 | 3 | 7.8 | 7 | 9 |
| 9 | 1 | 3 | | 7 | 9 |
| 10 | 1 | 3 | 6.8 | 7 | 9 |
| 11 | 1 | 3 | 10 | 7 | 9 |
| 12 | 1 | 3 | 3.9 | 7 | 9 |
| 13 | 1 | 3 | 11.3 | 7 | 9 |
| 14 | 1 | 3 | | 7 | 9 |
| 15 | 1 | 3 | | 7 | 9 |
| 16 | 1 | 3 | | 7 | 9 |
| 17 | 1 | 3 | | 7 | 9 |
| 18 | 1 | 3 | | 7 | 9 |
| 19 | 1 | 3 | | 7 | 9 |
| 20 | 1 | 3 | | 7 | 9 |
+---------------+-----+-----+------+-----+-----+
I want to query last 7 rows data where the DATA column is not empty. Trying to achieve something like this:
+----+---+---+------+---+---+
| 7 | 1 | 3 | 10 | 7 | 9 |
| 8 | 1 | 3 | 7.8 | 7 | 9 |
| 9 | 1 | 3 | | 7 | 9 |
| 10 | 1 | 3 | 6.8 | 7 | 9 |
| 11 | 1 | 3 | 10 | 7 | 9 |
| 12 | 1 | 3 | 3.9 | 7 | 9 |
| 13 | 1 | 3 | 11.3 | 7 | 9 |
+----+---+---+------+---+---+
But currently, I am only able to get the last 7 rows data which looks like this:
+---------------+-----+-----+------+-----+-----+
| Serial Number | LSL | LCL | DATA | UCL | USL |
+---------------+-----+-----+------+-----+-----+
| 14 | 1 | 3 | | 7 | 9 |
| 15 | 1 | 3 | | 7 | 9 |
| 16 | 1 | 3 | | 7 | 9 |
| 17 | 1 | 3 | | 7 | 9 |
| 18 | 1 | 3 | | 7 | 9 |
| 19 | 1 | 3 | | 7 | 9 |
| 20 | 1 | 3 | | 7 | 9 |
+---------------+-----+-----+------+-----+-----+
The formula I used is:
=SORT(QUERY(Sheet1!A7:F,"order by A desc limit 7"),1,1)
This formula does not incorporate the condition that the last row of DATA column must not be empty. Is there a way to achieve what I am looking for?
Assuming your serial numbers are consecutive and sorted as such.
=QUERY(A:F,"Select * where A >= "&ARRAYFORMULA(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1))-6&" limit 7")
Breakdown:
=QUERY(A:F,"Select * where A >= "
//index used to find the first serial number with a number in the data column
&ARRAYFORMULA(INDEX(
//reverse order
SORT(A2:F,1,false),
//find first number in data column of reversed data
MATCH(true,ISNUMBER(
//get fourth column (data column) to check for numbers
INDEX(SORT(A2:F,1,false),,4)
//minus 6 so you can get the 6 rows above and the row found
),0),1))-6
//get the first 7 rows from the serial number that matches.
&" limit 7")
EDIT
After our conversation:
If your first column is a date and your dates are consecutive with no duplicates, you can use this:
=QUERY(A:F,"Select * where A >= date '"&TEXT(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1)-6,"yyyy-mm-dd")&"' limit 7")
Breakdown:
=QUERY(A:F,"Select * where A >= date
//date tells query that it's looking for a date value
'"&TEXT(INDEX(SORT(A2:F,1,false),MATCH(true,ISNUMBER(INDEX(SORT(A2:F,1,false),,4)),0),1)-6,
"yyyy-mm-dd")&"' limit 7"))
//text formats the date in the way that query requires: yyyy-mm-dd
Based on description rather than example:
=query(query(A:F,"where D is not NULL order by A desc limit 7"),"order by Col1")
("last 7 rows data where the DATA column is not empty.")
I'm trying to read a text file in Apache Pig Latin that has non-delimited ascii comprising each row. That is, each column in that row begins and ends at a specific position in the row.
Sample definition:
+--------+----------------+--------------+
| Column | Start Position | End Position |
+--------+----------------+--------------+
| A | 1 | 6 |
+--------+----------------+--------------+
| B | 8 | 11 |
+--------+----------------+--------------+
| C | 13 | 15 |
+--------+----------------+--------------+
Sample Data:
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| s | a | m | p | l | e | | d | a | t | a | | | h | i |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
| d | u | d | e | | | | hi | | | | | b | r | o |
+---+---+---+---+---+---+---+----+---+----+----+----+----+----+----+
Expected Output:
sample, data, hi
dude, hi, bro
How do I read this in Pig? PigStorage doesn't seem flexible enough to allow positional delimiting, only string delimiting (comma, tab, etc..).
Looks like Apache provides a loader for this specific use case:
LOAD 'data.txt' USING org.apache.pig.piggybank.storage.FixedWidthLoader('1-6, 8-11, 13-15', 'SKIP_HEADER') AS (a, b, c);
https://pig.apache.org/docs/r0.16.0/api/