26

私はできません:

>>> session.query(
        func.count(distinct(Hit.ip_address, Hit.user_agent)).first()
TypeError: distinct() takes exactly 1 argument (2 given)

できます:

session.query(
        func.count(distinct(func.concat(Hit.ip_address, Hit.user_agent))).first()

これは問題ありません (「pageload」データベース テーブル内の一意のユーザーの数)。

これは一般的なケースでは正しくありません。たとえば、次の表では 2 ではなく 1 が返されます。

 col_a | col_b
----------------
  xx   |  yy
  xxy  |  y

次の SQL を生成する方法はありますか (少なくとも postgresql では有効です)。

SELECT count(distinct (col_a, col_b)) FROM my_table;
4

3 に答える 3