MYSQL - 仅使用表格选择包含组的计数

时间:2018-03-01 13:35:10

标签: mysql

我有这些数据

idhouse  year
  7     2016
  2     2018
  2     2017
  3     2017
  4     2015
  14    2003
  3     2018
  5     2018
  4     2017
  4     2018

我想计算属于两年的房屋数量。

我尝试使用mysql select但没有工作。 我应该怎么做?

EDITED

对不起我的不好解释。

我只有一个mysql表。

在2017年和2018年过滤并计算这些房子的麻木,我应该得到这些匹配:

idhouse  year
  7     2016
  2     2018*
  2     2017*
  3     2017*
  4     2015
  14    2003
  3     2018*
  5     2018
  4     2017*
  4     2018*

SELECT应显示3

4 个答案:

答案 0 :(得分:0)

我认为一所房子一年只能出现一次。试试这个:

SELECT 
  COUNT(*) nb_houses
FROM  (SELECT house
       FROM yourTable
       GROUP BY house
       HAVING COUNT(*)>1) A;

请参阅此run on SQL Fiddle

答案 1 :(得分:0)

假设PK(房子,年份),如果你只是想知道多少房子被列出多次,你可以这样做......

SELECT COUNT(DISTINCT x.house) total 
  FROM my_table x 
  JOIN my_table y 
    ON y.house = x.house 
   AND y.year <> x.year;

答案 2 :(得分:0)

我认为您正在使用此问题进行网络应用

SELECT house, COUNT(year) as count_year FROM table GROUP BY house HAVING COUNT(year) = 2 

通过使用上面的数据,结果将是

房子| count_year
____2 | _______ 2

然后,如果您使用像PHP这样的服务器端脚本,请使用mysqli_num_rows来获取行数。

或者如果您使用其他语言,只需调整算法以获取行数

答案 3 :(得分:0)

通过这个选择我得到它:

select count(*) from (select house from yourTable Where year = 2018 and house in (select house from yourTable where year = '2017')) A;

但是我们可以在效率方面改进这个选择吗?

您可以尝试here

感谢。