How to fix amount sum issue in mysql decimal quantiy? [duplicate] - mysql

This question already has answers here:
Is floating point math broken?
(31 answers)
Closed 2 years ago.
I have two colums on mysql database table which holds float values. What I need is to get the sum of two colums and my mysql query is as follow
SELECT amntGot,commission, SUM(amntGot+commission) as amt from mytable;
Issue I got is the sum value goes wrong in the result
For example
amntGot = 4.6175 commission = 0.3825 Then amt goes to 4.999999821186066 . I expect result as 5 Which is (4.6175+0.3825)
I dont know why the result gives me 4.999999821186066 instead of 5
I could not find a dolution from StackOverflow, so any solution would be much appreciated,
I have attached screenshots of few results below

You can try this:
SELECT amntGot,commission, ROUND(SUM(amntGot+commission),0) as amt from mytable;

Related

Can someone tell me why this query isn't working please? [duplicate]

This question already has an answer here:
SQL statement is ignoring where parameter
(1 answer)
Closed 3 years ago.
Can someone tell me why this query isn’t working please?
$result = $connect->query( “SELECT *
FROM DBdata
WHERE catc !=‘121’
AND description LIKE ‘%$strm%’
OR ttl LIKE ‘%$strm%’
AND active = 1” );
THE PROBLEM - It IS LISTING ‘catc’ that = 121
I want the result it is giving, but don't want the catc items that equal 121
Thanks!
Your OR is likely what's messing things up.
SELECT * FROM HWpix
WHERE catc !='121'
AND
(description LIKE '%$strm%'
OR ttl LIKE '%$strm%')
AND active = 1

Can I retrieve 2 different results from 1 table in a single query? [duplicate]

This question already has answers here:
Find total number of results in mySQL query with offset+limit
(7 answers)
Closed 6 years ago.
I am making a pagination function, here is my case:
1 table (example)
id | title | date | details
Now, I want to retrieve two different results from this table (example)
Count all of the rows (for the total count of all the lists)
I will only show every 10 list per page.
My current code is, I have 2 separated queries for 1 and 2, so it is like 2 connections, my question is, can this be done with a single query and then retrieve both of 1 and 2 results? If so, what do I need to do? Any suggestion/s can help me!
I think,
This will help you.
Step 1: Get the all list from the table
Step 2: Then count the records
Here is the single query to perform it.
SELECT COUNT(tmp.id) as cnt, tmp.* FROM (SELECT id, title, date, details FROM tablename) tmp

MySQL: comma separated string within IN() [duplicate]

This question already has answers here:
FIND_IN_SET() vs IN()
(4 answers)
how to select all data whose input array found and not found in mysql
(1 answer)
Closed 6 years ago.
I've seen a lot of questions with a similar question. However, all the answers are misleading. Most answers say to use FIND_IN_SET and this seems incorrect to my question.
Below query:
SELECT
*
FROM
data_table
WHERE field_id IN ('618,622,626,773,776');
Would normally just show the first ID row. In this example being '618'
id data
--- ------
618 ....
How would one go about this without using any stored procedures or user defined functions? Displaying the following results:
id data
--- ------
618 ....
622 ....
626 ....
773 ....
776 ....
Note; '618,622,626,773,776' will always remain as a string. This is the problem here.
Most answers say to use FIND_IN_SET and this is completely incorrect to my question.
It is completely correct. If it didn’t work for you – then you just used it wrong.
SELECT * FROM data_table WHERE FIND_IN_SET(field_id, '618,622,626,773,776')

Regular expression for mysql query [duplicate]

This question already has answers here:
MYSQL REGEXP search in JSON string
(3 answers)
Closed 7 years ago.
I have three records in mysql:
1. a:7:{s:10:"state_name";s:11:"West Bengal";s:7:"city_id";a:40:{i:0;s:4:"1166";i:1;s:4:"1454";i:2;s:4:"1455";i:3;s:4:"1456";i:4;s:4:"1458";i:5;s:4:"1459";i:6;s:4:"1460";i:7;s:4:"1461";i:8;s:4:"1463";i:9;s:4:"1464";i:10;s:4:"1465";i:11;s:4:"1466";i:12;s:4:"1468";i:13;s:4:"1469";i:14;s:4:"1470";i:15;s:4:"1471";i:16;s:4:"1473";i:17;s:4:"1474";i:18;s:4:"1475";i:19;s:4:"1476";i:20;s:4:"1478";i:21;s:4:"1479";i:22;s:4:"1480";i:23;s:4:"1481";i:24;s:4:"1483";i:25;s:4:"1484";i:26;s:4:"1485";i:27;s:4:"1486";i:28;s:4:"1488";i:29;s:4:"1489";i:30;s:4:"1490";i:31;s:4:"1491";i:32;s:4:"1493";i:33;s:4:"1494";i:34;s:4:"1495";i:35;s:4:"1496";i:36;s:4:"1498";i:37;s:4:"1499";i:38;s:4:"1500";i:39;s:4:"1501";}s:6:"gender";s:4:"male";s:3:"age";s:0:"";s:12:"category_ids";s:2:"68";s:16:"product_type_ids";s:2:"30";s:18:"min_purchase_price";s:1:"0";}
2. a:7:{s:10:"state_name";s:11:"West Bengal";s:7:"city_id";a:8:{i:0;s:4:"1465";i:1;s:4:"1466";i:2;s:4:"1467";i:3;s:4:"1471";i:4;s:4:"1475";i:5;s:4:"1476";i:6;s:4:"1478";i:7;s:4:"1479";}s:6:"gender";s:0:"";s:3:"age";s:4:"0-30";s:12:"category_ids";s:2:"58";s:16:"product_type_ids";s:0:"";s:18:"min_purchase_price";s:2:"50";}
3. a:7:{s:10:"state_name";s:11:"West Bengal";s:7:"city_id";a:1:{i:0;s:4:"1475";}s:6:"gender";s:6:"female";s:3:"age";s:4:"0-30";s:12:"category_ids";s:2:"58";s:16:"product_type_ids";s:0:"";s:18:"min_purchase_price";s:3:"100";}
with the column name conditions_serialized.
Now I am trying to write a sql query to fetch all the records having city_id 1475.
My code is like :
SELECT `main_table`.*, `rule_coupons`.`code` FROM `salesrule` AS `main_table` LEFT JOIN `salesrule_coupon` AS `rule_coupons` ON main_table.rule_id = rule_coupons.rule_id AND rule_coupons.is_primary = 1 WHERE (conditions_serialized regexp 'city_id";a:[0-9]*:{.*(i:[0-9]*;s:[0-9]*:"1475";)}')
But by this only 2 records are displaying 2nd and 3rd, not the first one.
Could you please check my query and rectify that why it is not displaying all?
Thanks in advance.
You are looking explicitly for 1475
city_id";a:[0-9]*:{.*(i:[0-9]*;s:[0-9]*:"**1475**";)}
change it to this instead to get records from the 3 records. Note: from 3 to 5 digits
city_id";a:[0-9]*:{.*(i:[0-9]*;s:[0-9]*:"\d{3,5}";)}

SQL to return list of fields containing No data [duplicate]

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
SQL: Select columns with NULL values only
Find fields that aren't used (have all nulls)
I have a table with 400 feilds and 3 Bil rows out of which 100 of them have no values/data. Can some one please give me a sample example or suggestion on how to proceed to get the list of those 100 columns which has null for all the 3 Bil rows in that table.
Thank you in advance.