[英]Count and RANK in msyql , PHP
Hi I need help with my query, i have a trackdb table that i need to get total count then rank them per user.嗨,我的查询需要帮助,我有一个 trackdb 表,我需要获取总数然后按用户对它们进行排名。
trackdb ----------`` ID task task2 task3 task4 task5 task6 User Date 1 Clean Repair Emp1 1/1/2019 2 Repair Emp2 1/2/2019 3 Clean Emp1 1/5/2019 4 Repair Emp3 1/6/2019 5 Clean Emp1 1/10/2019
I want to get the total task done for each User per month then Rank them我想每月为每个用户完成总任务,然后对他们进行排名
SELECT User,COUNT(CASE WHEN (task='Clean' OR task='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task2='Clean' OR task3='Repair') THEN 1 END ) AS totaltask1 ,COUNT(CASE WHEN (task3='Clean' OR task3='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task4='Clean' OR task4='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task5='Clean' OR task5='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task6='Clean' OR task6='Repair') THEN 1 END ) AS totaltask , FROM trackdb WHERE YEAR(date_received)='$period' AND User='$empname' AND MONTH(date_received)='$month'
SELECT User,COUNT(CASE WHEN (task='Clean' OR task='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task2='Clean' OR task3='Repair') THEN 1 END ) AS totaltask1 ,COUNT(CASE WHEN (task3='Clean' OR task3='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task4='Clean' OR task4='Repair') THEN 1 END ) AS totaltask ,COUNT (CASE WHEN (task5='Clean' OR task5='Repair') THEN 1 END ) AS totaltask ,COUNT(CASE WHEN (task6='Clean' OR task6='Repair') THEN 1 END ) AS totaltask , 从 trackdb WHERE YEAR(date_received)='$period' AND User='$empname' AND MONTH(date_received)='$month'
$resultprod = mysqli_query($database,$queryprod);
$rowprod = mysqli_fetch_array($resultprod);
$totprod = $rowprod['totaltask'] + $rowprod['totaltask1'] + $rowprod['totaltask2'] + $rowprod['totaltask3'] + $rowprod['totaltask4'] + $rowprod['totaltask5'];
I was able to get the total task of Emp1 per month per Year with the above query however i needed to get also the rank of Emp1 if compared with the other Employee.通过上述查询,我能够获得每年每月 Emp1 的总任务,但是如果与其他员工相比,我还需要获得 Emp1 的排名。
Hope someone can help, Thanks in Advance!希望有人能帮忙,提前致谢!
I've the same problem a few months ago.几个月前我也有同样的问题。 Use dynamic pivot with group_concat like this.
像这样使用带有 group_concat 的动态枢轴。
SET @sql_dynamic = (
SELECT
GROUP_CONCAT( DISTINCT
CONCAT(
'SUM( IF(MONTH(trx_date) = '
, MONTH(trx_date)
, ', amount,0) ) AS mo_'
, MONTH(trx_date)
)
)
FROM sales_table
);
SET @sql = CONCAT('SELECT name, ',
@sql_dynamic, '
FROM sales_table
GROUP BY name WITH ROLLUP'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Result:结果:
+---------+------+------+------+ | +---------+------+------+------+ | name |
姓名 | mo_1 |
mo_1 | mo_2 |
mo_2 | mo_3 |
mo_3 | +---------+------+------+------+ |
+---------+------+------+------+ | Alfa |
阿尔法 | 375 |
第375话815 |
第815话375 |
第375话|
| Bravo |
布拉沃 | 310 |
第310话525 |
第525话825 |
第825话|
| Charlie |
查理 | 850 |
850 | 300 |
300 | 725 |
第725话|
| Delta |
三角洲 | 0 |
0 | 1000 |
1000 | 370 |
第370话|
| NULL |
空 | 1535 |
第1535章2640 |
2640 | 2295 |
2295 | +---------+------+------+------+
+---------+------+------+------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.