0

次のクエリは、同じ日の売上高を教えてくれます。また、新規ユーザー数とクレジット。

これは私の作業クエリです (うまくいきます!):

SELECT Substring(purchase.`date`,1,10)                       AS `DayDate`, 
                   Sum(Cast(Substring(purchase.`item`, 12) AS UNSIGNED))     AS `Credit`,
                   Count(1)                                                  AS `Sales`,
                   (SELECT Count(*) FROM enswitch_mobile_users WHERE Date(purchase.`date`) = Substring(enswitch_mobile_users.`creation_date`,1,10))  AS `New_users`
                        FROM   (SELECT item, date 
                                    FROM enswitch_new_iphone_purchases WHERE `status`=1
                                    UNION 
                                    SELECT item, date 
                                    FROM enswitch_new_android_purchases WHERE `status`=1) AS `purchase` 
                        WHERE purchase.`date` >= :from_date AND purchase.`date` <= :to_date
                GROUP  BY `DayDate` 
                ORDER  BY `DayDate` DESC

ここでは3つのテーブルで検索しています。 enswitch_new_android_purchases enswitch_new_iphone_purchase どちらにも item、user_id、status、および date 列があります。1 つのエントリの例:

date: 2012-08-01 16:24:30 item: xsalnx.sip.70 user_id: 1337 status:1

enswitch_mobile_usersまた、 (id、creation_date、モバイル ID、...)から mobile_users の量を引き出し、特定の日付でグループ化します。

私がやろうとしているのは、購入したユーザーまたは新しいユーザーがテスターであるかどうかのテストを追加することです。もしそうなら、クエリでこのデータを無視したいです。

enswitch_testing_devices(id, name, mobile_id) という名前のテーブルにテスターを保存しています 。

enswitch_mobile_usersそして、 (mobile_id 列)でデータを結合できます。

これまでのところ、私はそれを機能させようとしましたが、運がありませんでした..どうすればこのクエリを実行できますか?

4

2 に答える 2

0

以下を試してください-ユーザーを取得するときに句を追加しました-テストを除くすべてのユーザーを取得します。ここで、サンプル データと構造テーブルが役立ちます。(クエリを書き直すことができると思います。)

SELECT Substring(purchase.`date`,1,10)                       AS `DayDate`, 
                   Sum(Cast(Substring(purchase.`item`, 12) AS UNSIGNED))     AS `Credit`,
                   Count(1)                                                  AS `Sales`,
                   (
                        SELECT Count(*) 
                        FROM enswitch_mobile_users 
                        WHERE 
                            Date(purchase.`date`) = Substring(enswitch_mobile_users.`creation_date`,1,10) 
                            AND enswitch_mobile_users.mobile_id NOT IN ( select mobile_id from enswitch_testing_devices WHERE 'is tester')
                    )  AS `New_users`
                        FROM   (SELECT item, date 
                                    FROM enswitch_new_iphone_purchases WHERE `status`=1
                                    UNION 
                                    SELECT item, date 
                                    FROM enswitch_new_android_purchases WHERE `status`=1) AS `purchase` 
                        WHERE purchase.`date` >= :from_date AND purchase.`date` <= :to_date
                GROUP  BY `DayDate` 
                ORDER  BY `DayDate` DESC
于 2013-02-04T10:36:50.207 に答える